this( ) 란?
- 자기 자신의 생성자를 의미
- ★★ 항상 생성자안에서만 사용이 가능하다
- ★★ 생성자 안에서도 맨 첫번째 문장에 와야한다.
- 맴버변수만큼 인자를 가진 인자 생성자를 호출하기 위해서 주로 사용된다. 즉, 맴버변수보다 인자가 적은 생성자 안에서 사용한다.
예제를 보면서 이해해보자
▲ 위에서의 this는 뒤에 ( )가 없으므로 생성자가 아닌 그냥 클래스를 가리키는 this이다. 따라서 맴버변수 x와 y에 각각 1씩을 넣고 print메소드를 호출해보면 아래와 같다.
기본생성자에서 this( );를 사용한다는 것은 결국 기본생성자를 호출하면 자기자신의 생성자인 this()를 호출하게 될 것이고 this()가 호출되면 자기자신이 가리키는 Point()가 호출되는 결국은 마치 무한루프같은 재귀호출이 되어버린다.
▲ new Point()를 통해 기본생성자를 실행했기 때문에 x와 y에 1씩 대입되고 "기본생성자"가 출력된다.
이후 print()메소드를 호출하면 대입된 값으로 출력되는 것을 볼 수 있다.
▲ x인자만 받는 인자생성자와 x,y모두 인자로 받는 인자생성자를 만들었다. 각각을 출력해보면
▲ 각각 new하고 인자생성자로 먼저 맴버변수를 초기화하면서 호출하니까 순서가 위와 같이 출력된다.
하지만 여기서 아래와 같이 this( ) 메소드 즉, 자기자신 생성자를 사용할 수도 있다.
▲this() 생성자를 사용하면서 직접 매개변수값을 받고, 하드코딩 값을 집어넣을 수 있다.
인자가 2개인 인자생성자 안에서는 사용할 수 없다. 맴버변수보다 인자가 적은 생성자 안에서만 사용할 수 있기 때문이다!
'Java' 카테고리의 다른 글
[Java]String Constructor (0) | 2022.03.14 |
---|---|
[Java]싱글톤 디자인(Single Tone Design) (0) | 2022.03.14 |
[Java]생성자(Constructor) (0) | 2022.03.11 |
[Java]Over loading(중복 정의) (0) | 2022.03.11 |
[Java]this (0) | 2022.03.11 |