아래의 클래스를 하나 정의 해 보자.
class Car {
String color;
String gearType;
int door;
}
이제 해당 클래스의 아래와 같이 만들어 본다.
Car(String c, String g, int d) {
color = c;
gearType = g;
door = d;
}
매개변수로 각각 c, g, d를 받고 Car클래스의 멤버변수에 바로 초기화를 해 주는 생성자 이다.
다만 이렇게 간단한 코드인 경우를 제외하고 다른 사람의 코드를 열어봤을때 이렇게 불명확한 이름의 매개변수라면 얼마나 당황스러울까? 이를 해결하기 위해 매개변수의 이름을 아래처럼 고쳐보자
Car(String color, String gearType, int door) {
color = color;
gearType = gearType;
door = door;
}
이 코드는 아무런 의미가 없다. 여기서의 color는 인스턴스 변수의 color가 아닌 Car()생성자의 지역변수로써 color이기 때문이다. 이때 this.를 사용한다. this.는 해당 인스턴스 내에서 본인의 인스턴스 주소를 참조하라는 뜻이다. 만약 this.color를 하게 된다면 내 인스턴스의 color멤버 변수를 뜻하는 것이다. 이를 이용해 아래처럼 생성자를 만들어 주면 더욱 더 명확한 생성자가 될 것이다.
Car(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}