자바 상속
- 인스턴스를 생성하기 위해서는 반드시 생성자를 호출해야 한다. 부모 클래스로부터 상속받은 메소드 및 필드는 엄연히 부모 클래스에 정의된 것이고 부모의 것이다. 따라서 부모 클래스의 생성자가 호출되어야 자식 클래스에서 사용이 가능한 것이다. 하지만 생성자는 상속이 되지 않는다. 대신 자식 클래스로 인스턴스를 생성할 때 부모 클래스의 기본 생성자를 자동으로 호출하게 된다. 소스 코드를 통해서 알아보자
class SuperClass {
public SuperClass() {
System.out.println("부모 생성자 호출");
}
}
class SubClass extends SuperClass{
public SubClass() {
System.out.println("자식 생성자 호출");
}
}
public class InheritanceConstructorEx01 {
public static void main(String[] args) {
SubClass sc = new SubClass();
}
}
- 부모 클래스와 자식 클래스의 생성자를 각각 정의하고 main 메소드에서는 자식 클래스의 인스턴스를 생성하였다.
- 그 결과 자식 클래스의 생성자는 물론이고 부모 클래스의 기본 생성자 또한 자동적으로 호출되는 것을 알 수 있다.
- 이때 부모 클래스의 생성자가 먼저 호출되고 뒤이어 자식 클래스의 생성자가 호출된다.
- 기본생성자(아무런 입력파라미터가 없는 생성자)가 없다면 상속을 통해 정의된 자식클래스에서 에러가 발생한다