티스토리 뷰

Java+Spring/Java

[Java]this() vs. this

Vagabund.Gni 2022. 7. 13. 11:26
728x90
반응형

this()

 

this() 메서드는 클래스 안에서 생성자를 상호 호출할 때 사용한다.

 

조금 더 풀어서 쓰자면, 생성자 안에서 다른 생성자를 호출할 때 사용되는 것이 this() 메서드이다.

 

this() 메서드를 사용하기 위해선 제한조건이 두 개가 있는데,

 

  1. this() 메서드는 반드시 생성자의 내부에서만 사용할 수 있다.
  2. this() 메서드는 반드시 생성자의 첫 줄에 위치해야 한다.

가 그것이다.

 

제한조건이 구체적으로 무엇을 의미하는지는 아래 코드를 보자.

public class Test {
    public static void main(String[] args) {
        Example example = new Example();
        Example example2 = new Example(5);
    }
}

class Example  {
    public Example()  {
        System.out.println("Example의 기본 생성자 호출!");
    }

    public Example(int x)  {
        this();
        System.out.println("Example의 두 번째 생성자 호출!");
    }
}

//출력 결과
Example의 기본 생성자 호출!
Example의 기본 생성자 호출!
Example의 두 번째 생성자 호출!

Example 클래스는 두 개의 생성자를 가지고 있으며,

 

그 중 두 번째 생성자의 첫 번째 줄에 this() 메서드가 등장한다.

 

이 this() 메서드는 두 번째 생성자의 내부에 첫 번째 생성자를 불러오는 기능을 한다.

 

따라서 Example 생성자를 이용해 인스턴스를 생성하는 과정에서 두 번째 생성자가 호출될 때

 

this() 메서드가 실행됨으로서 다시 첫 번째 생성자가 호출되고,

 

<Example의 기본 생성자 호출!>이라는 부분이 먼저 출력되는 것이다.

 


 

this 키워드

 

this는 클래스의 인스턴스 변수와 생성자의 매개변수를 구분하는 용도로 사용되는 키워드이다.

 

이게 무엇을 뜻하는지 알기 위해 직전 글에서 사용했던 코드를 다시 가져왔다.

public class ConstructorExample {
    public static void main(String[] args) {
        Car c = new Car("Model X", "빨간색");
        System.out.println("제 차는 " + c.getModelName() + "이고, 컬러는 " +  c.getColor() + "입니다.");
    }
}

class Car {
    private String modelName;
    private String color;

    public Car(String modelName, String color) {
        this.modelName = modelName;
        this.color = color;
    }

    public String getModelName() {
        return modelName;
    }

    public String getColor() {
        return color;
    }
}

//출력 결과
제 차는 Model X이고, 컬러는 빨간색입니다.

위의 코드를 보면 Car 클래스의 인스턴스 변수로 modelName, color가 선언되어 있으며

 

동시에 생성자의 매개변수로도 modelName, color가 정의되어 있음을 알 수 있다.

 

이런 경우, 생성자 내부의 this.modelName 은 생성자의 매개변수가 아닌 클래스의 인스턴스 변수를 가리키게 되며

 

this.키워드는 생성자 내부에서 클래스의 인스턴스 변수에 접근하는 데 사용된다.

 

즉, this는 클래스 혹은 인스턴스 자신을 가리키며, this 키워드는 인스턴스 변수와 생성자의 매개변수를 구분하는데 쓰인다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함