[java] 자식 클래스의 생성자와 부모 클래스의 생성자

자식 클래스(subclass)는 부모 클래스(superclass)로부터 상속을 받습니다. 이때 자식 클래스가 생성될 때 부모 클래스의 생성자가 어떻게 처리되는지에 대해 알아보겠습니다.

부모 클래스의 생성자 호출

부모 클래스의 생성자는 super() 키워드를 사용하여 명시적으로 호출될 수 있습니다.

public class Parent {
    public Parent() {
        System.out.println("Parent constructor");
    }
}

public class Child extends Parent {
    public Child() {
        super(); // 부모 클래스의 생성자 호출
        System.out.println("Child constructor");
    }
}

위의 예제에서 Child 클래스의 생성자에서 super()를 사용하여 부모 클래스인 Parent의 생성자를 호출하고 있습니다.

부모 클래스의 기본 생성자

자식 클래스의 생성자에서 부모 클래스의 생성자를 명시적으로 호출하지 않으면 부모 클래스의 기본 생성자가 자동으로 호출됩니다.

public class Parent {
    public Parent() {
        System.out.println("Parent constructor");
    }
}

public class Child extends Parent {
    public Child() {
        System.out.println("Child constructor");
    }
}

위의 예제에서 Child 클래스의 생성자에서 super()를 사용하지 않았지만, 부모 클래스인 Parent의 기본 생성자가 호출됩니다.

매개변수를 갖는 부모 클래스의 생성자 호출

부모 클래스의 매개변수를 갖는 생성자는 super()를 사용하여 호출할 때 인자를 전달할 수 있습니다.

public class Parent {
    public Parent(String message) {
        System.out.println("Parent constructor: " + message);
    }
}

public class Child extends Parent {
    public Child() {
        super("Hello"); // 매개변수를 갖는 부모 클래스의 생성자 호출
        System.out.println("Child constructor");
    }
}

위의 예제에서 Child 클래스의 생성자에서 super(“Hello”)를 사용하여 매개변수가 “Hello”인 부모 클래스인 Parent의 생성자를 호출하고 있습니다.

결론

자바에서 자식 클래스의 생성자는 부모 클래스의 생성자를 명시적으로 호출하거나 호출하지 않아도 자동으로 부모 클래스의 생성자가 호출됩니다. 부모 클래스의 생성자 호출을 통해 상속 관계를 구성하고 초기화 작업을 수행할 수 있습니다.

이상으로 자식 클래스의 생성자와 부모 클래스의 생성자에 대해 알아보았습니다. 부모 클래스와 자식 클래스 간의 유연하고 효율적인 상속을 이용하여 여러분의 코드를 작성하시기 바랍니다.


참고: