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

자바에서 자식 클래스는 부모 클래스의 생성자를 호출하여 상속받은 멤버 변수들을 초기화할 수 있습니다. 이는 자식 클래스가 생성될 때 부모 클래스의 생성자가 먼저 호출되어 초기화를 완료한 후 자식 클래스의 생성자가 호출되는데, 이를 “상속”이라고 합니다.

부모 클래스 생성자 호출

자바에서 부모 클래스의 생성자를 호출하기 위해서는 super() 키워드를 사용합니다. super() 키워드는 부모 클래스의 기본 생성자를 호출하는 것을 의미합니다. 만약 부모 클래스의 매개변수를 받는 생성자를 호출해야 한다면, super(매개변수)와 같이 호출할 생성자를 명시해야 합니다. 부모 클래스의 생성자는 자식 클래스의 생성자의 첫 줄에 위치해야 합니다.

예를 들어, 다음과 같이 부모 클래스와 자식 클래스가 있을 때:

public class Parent {
    public Parent() {
        // 부모 클래스 생성자의 내용
    }
}

public class Child extends Parent {
    public Child() {
        super(); // 부모 클래스의 기본 생성자 호출
        // 자식 클래스 생성자의 내용
    }
}

예제

다음은 실제 예제입니다.

public class Animal {
    private String name;

    public Animal(String name) {
        this.name = name;
    }

    public void eat() {
        System.out.println(name + " is eating.");
    }
}

public class Dog extends Animal {
    private String breed;

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

    public void bark() {
        System.out.println(breed + " is barking.");
    }
}

위의 예제에서 Dog 클래스는 Animal 클래스를 상속받고 있습니다. Dog 클래스의 생성자에서 super(name);을 통해 부모 클래스인 Animal 클래스의 생성자를 호출하여 name 변수를 초기화하고 있습니다.

요약

자바에서 자식 클래스의 생성자는 항상 부모 클래스의 생성자를 호출하여 부모 클래스의 멤버 변수를 초기화해야 합니다. 이를 통해 상속된 멤버 변수들이 올바르게 초기화되고 자식 클래스에서 사용될 수 있습니다.

참고: Oracle Java Documentation