this : 다른 언어에도 종종 보이는 키워드임
this가 하는 일
- 인스턴스 자신의 메모리를 가리킴
- 생성자에서 또 다른 생성자를 호출 할때 사용 (후에 서술되는 super도 알아두기)
- 자신의 주소(참조값)을 반환 함
생성된 인스턴스 메모리의 주소를 가짐
- 클래스 내에서 참조변수가 가지는 주소 값과 동일 한 주소 값을 가지는 키워드
public void setYear(int year)
{
this.year = year;
}
생성자에서 다른 생성자를 호출 하는 this
- 클래스에 생성자가 여러 개 인경우, this를 이용하여 생성자에서 다른 생성자를 호출할 수 있음
- 생성자에서 다른 생성자를 호출하는 경우, 인스턴스의 생성이 완전하지 않은 상태이므로 this() statement 이전에 다른 statement를 쓸 수 없음
public class Person {
String name;
int age;
public Person() {
//int num = 10;
//name = "test"; 이런식으로 constructor이 불리기 전 앞에 넣을 수 없다
this("이름없음", 1);
}//생성자는 인스턴스를 초기화하는 역할을 함.
//this를 호출할때 string과 int가 맵핑되는 똑같은 타입의 매개변수를 가진 것을 찾아야 함
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
}
자신의 주소를 반환하는 this
public class Person {
String name;
int age;
public Person() {
this("이름없음", 1);
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void showPerson() {
System.out.println(name + ", " + age);
} //생략가능
public Person getPerson() {
return this;
}
//자료코드 - 수업코드와 자료코드 중 하나 사용
/* public static void main(String[] args)
{
Person p = new Person();
p.name = "James";
p.age = 37;
Person p2 = p.getPerson();
System.out.println(p);
System.out.println(p2);
}*/
//수업코드
public static void main(String[] args) {
Person person = new Person();
person.showPerson();
System.out.println(person); //ch12.Person@15db9742
Person person2 = person.getPerson();
System.out.println(person2); //ch12.Person@15db9742두개의 반환값이 같음
}
}
'Java > [패스트캠퍼스] Java & SpringBoot로 시작하는 웹 프로그래밍' 카테고리의 다른 글
Ch 02. 객체 지향 입문 - 14. 버스 타고 학교 가는 학생의 과정을 객체 지향 프로그래밍으로 구현해보기 (0) | 2022.12.30 |
---|---|
Ch 02. 객체 지향 입문 - 13. 객체 간의 협력 (collabration) (0) | 2022.12.30 |
Ch 02. 객체 지향 입문 - 11. 캡슐화 (encapsulation) (0) | 2022.12.30 |
Ch 02. 객체 지향 입문 - 10. 접근 제어 지시자(access modifier)와 정보은닉(infomation hiding) (0) | 2022.12.30 |
Ch 02. 객체 지향 입문 - 09. 참조 자료형 변수 (0) | 2022.12.30 |
댓글