java this() 생성자

이번에 기록할 내용은 this생성자 이다. (this 키워드가 아니다.) java의 클래스 생성자도 역시 오버로딩이 가능하다. 함수 오버로딩은 훌륭한 기능이다. 다만 일반 함수의 오버로딩이 아니라 생성자의 오버로딩일 경우 객체의 멤버변수를 셋팅하는 경우가 많기 때문에 중복된 소스가 자주 발생한다.

this() 생성자란 클래스의 생성자 오버로딩시 반복되는 소스를 줄여주는 훌륭한 방법이다. 생성자 내부의 코드 블록 첫줄에 this()를 호출함으로 자신의 다른 생성자를 호출 할 수 있다. 주의할 점은 생성자 코드블록 내부의 this() 위에 다른 소스코드가 존재해서는 안된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Person {
private String name;
private int age;
private String sex;

public Person(String name){
//this.name = name; // this()생성자 위에 있는 코드에는 컴파일 오류가 발생한다.
this(name, 12); //자동으로 해당 파라미터에 적합한 자신의 생성자를 호출한다.
System.out.println("this생성자 아래에는 다른 코드가 존재 할 수 있다.");
}

public Person(String name, int age){
//this.name = name; // this()생성자 위에 있는 코드에는 컴파일 오류가 발생한다.
//this.age = age; // this()생성자 위에 있는 코드에는 컴파일 오류가 발생한다.
this(name, age, "Man"); //자동으로 해당 파라미터에 적합한 자신의 생성자를 호출한다.
System.out.println("this생성자 아래에는 다른 코드가 존재 할 수 있다.");
}

public Person(String name, int age, String sex){
this.name = name;
this.age = age;
this.sex = sex;
}
}

위 예제소스를 보면 쉽게 이해가 될것이다. 편리한 기능이라 생각되어 이렇게 기록해 놓는다.