1. 객체 자신을 가리키는 this
1.1. 1. this가 하는 일
- 인스턴스 자신의 메모리를 가리킴(객체는 힙 메모리에)
- 생성자에서 또 다른 생성자를 호출 할때 사용(객체가 생성될 때 호출되는 생성자인데, 생성자에서도 다른 생성자를 호출할 수 있음)
- 자신의 메모리 주소(참조값)을 반환 함
1.2. 2. 생성된 인스턴스 메모리의 주소를 가짐
클래스 내에서 참조변수가 가지는 주소 값과 동일 한 주소 값을 가지는 키워드

setYear() 메서드는 BirthDay 클래스의 메서드이고, setYear() 안의 this가 가지는 메모리 값은 빨간 박스이다.
<code />
public void setYear(int year)
{
this.year = year;
}
1.2.1. this의 역할 -> 생성된 인스턴스의 메모리를 가리키는 역할
(반드시 this를 써줘야 한다. 그 이유는 인자로 넘어온 year에 넘어온 값 그대로 year에 넣어주기 때문이다.)
1.3. 3. 생성자에서 다른 생성자를 호출 하는 this
- 클래스에 생성자가 여러 개 인경우, this를 이용하여 생성자에서 다른 생성자를 호출할 수 있음
- 생성자에서 다른 생성자를 호출하는 경우, 인스턴스의 생성이 완전하지 않은 상태이므로, this() statement 이전에 다른 statement를 쓸 수 없음 -> this("이름없음", 1); 위에 어떠한 코드도 쓰면 안된다는 것!
생성자의 역할 = 인스턴스 초기화
<java />
package ch12;
public class Person {
String name;
int age;
public Person() {//디폴트 생성자
this("no name",1);
}
public Person(String name,int age) {
this.name=name;
this.age=age;
}
public void showPerson() {
System.out.println(name+","+age);
}
public static void main(String[] args) {
Person person = new Person(); //디폴트 생성자 부른 것임
person.showPerson();
}
}

1.4. 3. 자신의 주소를 반환하는 this
<java />
package ch12;
public class Person {
String name;
int age;
public Person() {//디폴트 생성자
this("no name",1);
}
public Person(String name,int age) {
this.name=name;
this.age=age;
}
public void showPerson() {
System.out.println(name+","+age);
}
public Person getPerson() { //자기 자신을 반환하는 메서드 (this를 사용했당)
return this;
}
public static void main(String[] args) {
Person person = new Person(); //디폴트 생성자 부른 것임
person.showPerson();
System.out.println(person);
Person person2 = person.getPerson(); //getPerson() 메서드의 반환 인자가 Person이기 때문에 Person person2로 값 받음
System.out.println(person2);
//person과 person2의 값이 같다
}
}

'JAVA' 카테고리의 다른 글
2-12.객체 지향 - static 변수 (0) | 2022.01.11 |
---|---|
2-11.객체 지향 - 객체 간의 협력(프로그래밍 예제 포함) (0) | 2022.01.09 |
2-9.객체 지향 - 캡슐화 (0) | 2022.01.08 |
2-8.객체 지향 - 접근 제어 지시자, 정보 은닉 (0) | 2022.01.08 |
2-7.객체 지향 - 참조 자료형 변수 (0) | 2022.01.08 |