메소드를 부르기 전에 객체 생성해야 한다ㅏ.
public static void main(String[] args){
System.out.println("계산기 클래스 시작");
//클래스!! //객체이름 //생성자!
Calculator calc = new Calculator();
}
-생성자를 이용해서 객체를 만든다. 기본 생성자는 만들지 않아도 자동으로 생성해준다!-
public class Profile {
String name;
int age;
public void setName(String str) {
this.name = str; //결과 같다.
// name = str;
}
public void setAge(int val) {
age = val;
}
public void printName() {
System.out.println(name);
}
}
this연산자를 꼭 붙여야되는 줄 알았는데 아니었구나.
-this 연산자 필수야? 에 대한 답변 -
this연산자는 클래스 내 현재 객체를 참조하기 위한 키워드로 사용된다.
사용하지 않아도 클래스의 멤버 변수와 메서드를 참조할 수 있다.
다만 다음과 같은 경우를 위해 쓰자.
package chapter03;
public class Profile {
String name;
int age;
public void setName(String str) {
this.name = str;
}
public void printName(String name) {
System.out.println("Local variable name: " + name);
System.out.println("Member variable name: " + this.name); // this 키워드 사용
}
public static void main(String[] args) {
Profile profile = new Profile();
String name = "Min";
profile.setName(name);
profile.printName("?????");
}
}

인자값으로 받은 로컬변수를 그대로 넘겨주고
두번째 this.name으로는 클래스의 변수값을 가져오고 있다.
-클래스와 객체 구분해라~
??: 객체와 인스턴스 가 더 헷갈려요
책에서 명확한 답을 주지 않고 표현하고 있어서 개념을 더 찾아봤다.
클래스: 대명사 , 객체를 만들기 위한 템플릿,설계도 역할을 한다. 비슷한 동작을 가지는 객체들을 쉽게 관리할 수 있다! ex) 자동차,,핸드폰,,
?: 정말 추상적인데요? / 네 추상화된 개념입니다.
클래스에는 변수들과 메소드가 담겨있다.
객체 : 클래스 타입으로 선언되었을 때를 의미한다. ex) 자동차 아이폰 = new 자동차(); -> 아이폰 객체
그럼 인스턴스는?
객체가 실제 메모리에 할당되어 사용될 때 인스턴스라고 한다.
(클래스의 인스턴스화 -> 는 클래스로 객체를 생성한 것을 의미, 실제로 구현한다는 뜻)
"인스턴스는 일반적으로 실행중인 임의의 프로세스, 클래스의 현재 생성된 오브젝트(객체)를 가리킨다.
객체의 인스턴스는 데이터베이스나 백그라운드 프로세스 등 광범위한 컴퓨터 시스템 자원의 접근에 할당된 물리 메모리의 일부를 가리킨다. "
"인스턴스는 객체에 포함된다 볼 수 있다. 객체 지향 언어에서의 관점은 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부른다. 추상적인 개념과 구체적인 객체 사이 관계에 초점을 맞출 경우에 사용된다. 객체는 클래스의 인스턴스이고, 객체 간의 링크는 클래스 간의 연관 관계의 인스턴스이며, 실행 프로세스는 프로그램의 인스턴스이다. 즉, 인스턴스라는 용어는 반드시 클래스와 객체 사이의 관계로 한정지어서 사용할 필요는 없으며, 어떤 원본으로부터 생성된 복제본을 의미한다"
참고
http://wiki.hash.kr/index.php/%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4
정리해봅시다 문제
1. 클래스와 객체의 차이점
클래스는 껍데기에 불과. 클래스를 통해 객체를 생성해서 객체의 메소드와 변수를 가져와 사용한다.
2. 객체를 생성하기 위해서 꼭 사용해야하는 예약어는?
new 연산자~
3. 객체를 생성하기 위해서 사용하는 메소드 같이 생긴 클래스 이름에 소괄호가 있는 것은 뭐냐?
생성자요
4. 객체의 메소드를 사용하려면 어떤 기호를 객체 이름과 메소드 이름 사이에 넣어주어야하나요?
.
5. 클래스의 일반 메소드를 사용하기 위해서 어떤 것들을 만들어야하나요?
객체를 생성해야한다.
'자바' 카테고리의 다른 글
String 클래스의 equals() ,== 연산자, compareTo() 메소드 (0) | 2023.09.14 |
---|---|
인터페이스와 추상 클래스의 차이 (+왜 인터페이스의 변수는 static final로 선언될까 ? ) (0) | 2023.09.13 |
static 남발하면 안되는 이유 (0) | 2023.09.13 |
자바 4장을 마치며 인스턴스 변수와 클래스 변수의 차이를 알자~ (0) | 2023.08.30 |
자바의 신 1, 2 장 마치며 (0) | 2023.08.30 |