JAVA/포스팅

자바 생성자에서 다른 생성자 호출하기

짜집퍼박사(짜박) 2023. 11. 8. 16:30

자바에서 생성자에서 다른 생성자를 호출하는 것을 생성자 체이닝(Constructor Chaining)이라고 합니다. 생성자 체이닝을 사용하면 여러 개의 생성자가 서로 호출될 수 있으며, 코드의 중복을 피하고 유연한 초기화를 할 수 있습니다. 생성자 체이닝은 다음 두 가지 방법으로 구현할 수 있습니다.

1) this() 키워드를 사용하여 다른 생성자 호출 : this() 키워드를 사용하여 같은 클래스 내의 다른 생성자를 호출할 수 있습니다. 이때, this()를 사용하는 생성자는 다른 생성자를 호출하는 역할을 합니다.
2) super() 키워드를 사용하여 부모 클래스의 생성자 호출 : 하위 클래스에서 상위 클래스의 생성자를 호출할 때 super() 키워드를 사용할 수 있습니다. 이는 상속 관계에서 부모 클래스의 생성자를 호출하는 데 사용됩니다.

 

다음은 각각의 방법에 대한 설명과 예제입니다.

 

1. this() 키워드를 사용한 생성자 체이닝

public class MyClass {
    private int value;

    // 첫 번째 생성자
    public MyClass() {
        this(0); // 다른 생성자 호출
    }

    // 두 번째 생성자
    public MyClass(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
}

위의 예제에서 두 개의 생성자가 있으며, 첫 번째 생성자는 this() 키워드를 사용하여 두 번째 생성자를 호출하고 있습니다. 이렇게 하면 this()를 호출하는 생성자에서 초기화 코드를 공유할 수 있습니다.

 

2. super() 키워드를 사용한 생성자 체이닝 (상속 시)

public class Parent {
    private int value;

    public Parent() {
        this(0);
    }

    public Parent(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
}

public class Child extends Parent {
    private String name;

    public Child() {
        super(); // 부모 클래스의 생성자 호출
        name = "Child";
    }

    public Child(String name) {
        super(); // 부모 클래스의 생성자 호출
        this.name = name;
    }
}

위의 예제에서 Child 클래스는 Parent 클래스를 상속하고 있으며, super() 키워드를 사용하여 부모 클래스의 생성자를 호출하고 있습니다. 이렇게 하면 부모 클래스와 자식 클래스의 생성자를 연결할 수 있습니다.

 

With ChatGPT