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가 무엇을 가리키고 있는지 알 수 있다.
위의 예제를 통해서 생성자는 오버로딩이 가능하다는 사실을 알 수 있었다. 오버로딩이란 파라미터의 갯수를 다르게 하는 방식으로 같은 이름의 메서드를 여러개 생성할 수 있는 걸 의미한다.