JAVA - This()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Car {
String name;
int number;

public Car(){
name = "undefined";
number = 0;
}

public Car(String name) {
this.name = name;
}

public Car(String name, int number) {
this.name = name;
this.number = number;
}
}

그런데 이렇게 생성자가 많아질수록 this 키워드 명령이 중복될 수 있다. 이 때엔 this()을 사용하여 인스턴스 변수에 한번에 파라미터 대입이 가능하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Car {
String name;
int number;

public Car(){
this("undefined", 0);
}

public Car(String name) {
this(name, 0);
}

public Car(String name, int number) {
this(name, number);
}
}

this()는 클래스의 멤버를 모두 파라미터로 갖는다. 따라서 위의 경우처럼 생성자에 파라미터로 들어오지 않는 멤버가 있을 경우 값을 초기화해주어야한다.

IDE에서 this를 클릭하면, 이 this가 무엇을 가리키고 있는지 알 수 있다.

위의 예제를 통해서 생성자는 오버로딩이 가능하다는 사실을 알 수 있었다. 오버로딩이란 파라미터의 갯수를 다르게 하는 방식으로 같은 이름의 메서드를 여러개 생성할 수 있는 걸 의미한다.