Java

[Java]this() - 자기 자신의 기본생성자

MoZZANG 2022. 3. 14. 19:08
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