자바에는 this
와 this()
키워드가 있는데 이 키워드는 전혀 다른 키워드이다.
짧게 설명하자면 this
는 인스턴스 자신을 가르키는 참조 변수이고 this()
는 생성자를 뜻한다.
this
1 2 3 4 5 6 7 8 9 10 11 | class Car {
String color; // 인스턴스 변수
String gearType;
int door;
Car(String color, String gearType, int door){
this.color = color;
this.gearType = gearType;
this.door = door;
}
}
|
this
는 위 코드처럼 생성자의 매개변수로 선언된 변수의 이름이 인스턴스 변수와 같을 때 인스턴스 변수와 지역변수를 구분하기 위해서 사용한다.
Car() 생성자 안에서의 this.color
는 인스턴스 변수이고, color
는 매개변수로 정의된 지역변수이다.
static 메서드에서는 this
를 사용하지 못한다.
this()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class Car{
String color; // 인스턴스 변수
String gearType;
int door;
Car(){
this("white", "auto", 4); // Car(String color, string gearType, int door)를 호출
}
Car(String color){
this(color, "auto", 4);
}
Car(String color, String gearType, int door){
this.color = color;
this.gearType = gearType;
this.door = door;
}
}
|
this()
는 같은 클래스의 다른 생성자를 호출할 때 사용한다. 위 코드의 Car() 생성자와 Car(String color) 생성자는 this()
를 통해 모두 Car(String color, String gearType, int door) 생성자를 호출하고 있는 것이다.
refer
자바의 정석 1