경주란 빨리 달리는 사람들의 것이 아니라
       계속 뛰어가는 사람들의 것이다.
LinkTree🌲

Development/Java

[Java, 개념] this() 메서드

컴공희 2022. 7. 21. 22:29

자바에는 This의 개념이 있다. 동일한 이름의 호출 충돌을 막기 위해서 This가 있으며 

this는 자신의 객체를 의마하고 This()는 클래스 내 자신의 생성자를 의미한다.

즉 this 는 인스턴스 맴버의 필드나 메서드를 의미한다.

This 와 This()에는 다른 메서드이다. 

 

여기서는 This() 메서드에 대해서 설명하겠다. 


This() 메서드

 

This() 메서드는 클래스 내 해당 생성자를 호출하는 메서드이다.

클래스에는 오버로딩을 통해서 여러가지 생성자가 존재하는데 모두 이름은 동일하다

어떤 생성자를 불러올 것이며, 어떻게 불러올 것인가

이를 해결하기 위해서 This() 메서드가 필요할 것이다.

 

class A{
	A(){
		System.out.println("첫번째 생성자");
       	}
    A(int a){
    	this();   //생성자 첫 줄 위치
    	System.out.println("두번째 생성자");
       	}
}

 이렇게 되면 A(int a)인 생성자가 호출될때 This()로 인해 첫번째 생성자도 호출하게 된다. 

 

This() 를 사용하기 위해서는 2가지 규칙이 있다. 

 

  1. 생성자 내부에서만 사용가능 
  2. 생성자의 첫 줄에 위치 해야한다.

이를 응용하면 더욱 깔끔한 코드 작성이 가능해진다. 

 

만약 메서드에서 생성자를 만들 때, 여러 매개 변수를 가지고 있는 생성자를 만들라고 하면 어떻게 만들 것인가? 

 

흔히 다들 이렇게 여러가지 생성자를 오버로딩해서 만들려고 할 것이다. 

이렇게 값을 중복으로 초기화 하는 것은 비효율적이다 .

 

This() 사용을 통해서 해당 생성자에 초기화 값을 불러와 중복 초기화를 생략하는 것이다. 

이렇게 작성한다면 더욱 깔끔한 코드를 작성할 수 있을 것이다.