Java/Java language
[Java] this 키워드
CrackCo
2020. 8. 9. 21:41
자바의 this 키워드는 객체 생성 후 메모리에 올라간 자기 자신의 인스턴스를 가리킨다.
this
// 자기 자신의 필드 참조
this.field_name = value
// 자기 자신의 생성자 참조
this(data_type1 field_name1, data_type2 field_name2, ...);
다른 클래스에서 참조 변수명을 사용하여 생성된 인스턴스를 참조할 수 있지만
자기 자신이 자신을 참조할 때는 this 키워드를 사용합니다.
멤버 변수명과 매개 변수명이 같을 경우
일반적으로 setter 메소드를 사용할 때 멤버 변수명과 받는 매개 변수명을 같게 정의합니다.
이러한 경우 🚨변수명이 중복되어 식별이 불가하기 때문에 오류가 발생합니다.
이를 분간하기 위해서 this 키워드를 사용해 자기 자신의 멤버 변수를 가리킵니다.
E.g.
public class ThisClass {
private String string;
public void setString(String string) {
this.string = string;
}
}
String 타입의 매개 변수 string에 담긴 데이터를 String 타입의 멤버 변수 string에 저장합니다.
이를 분간하기 위해서 자기 자신의 멤버 변수인 string 변수는 this 키워드를 사용합니다.
생성자에서 다른 생성자를 호출할 때
생성자의 매개 변수가 여러 개일 때 각각 매개 변수의 수에 맞춰 생성자들을 오버로딩 정의하는 경우가 있습니다.
이러한 경우 this 키워드를 사용해 자기 자신의 생성자를 호출하여 기본값을 임의로 지정해줄 수 있습니다.
E.g.
public class ThisClass {
private String name;
private int age;
// #1 생성자
public ThisClass(String name, int age) {
this.name = name;
this.age = age;
}
// #2 생성자
public ThisClass(String name) {
this(name, 20);
}
// #3 생성자
public ThisClass() {
this("CrackCo");
}
}
1.
기본 생성자인 #3 생성자는 this 키워드를 사용해 #2 생성자를 호출합니다.
#2 생성자는 매개 변수로 String 타입의 데이터를 저장하기 때문에
문자열 데이터 "CrackCo"와 함께 #2 생성자를 호출합니다.
2.
#2 생성자는 this 키워드를 사용해 #1 생성자를 호출합니다.
#1 생성자는 매개 변수로 String 타입의 데이터와 int 타입의 데이터를 저장합니다.
#2 생성자는 String 타입의 데이터를 전달 받아
임의의 데이터 숫자 20과 함께 #1 생성자를 호출합니다.