>frhyme.code
•java

Java - Invoking base constructor from derived class

Java - Invoking base constructor from derived class

  • Base Class와 Derived Class가 있을 때 내부에서 constructor를 구성하는 방법은 다음과 같은 두 가지가 있습니다.
  • 첫번째로는 다음처럼 super()를 통해 BaseClass의 Constructor를 직접 호출하는 방법이 있구요.
  • 단, 이 때 super()는 첫번째 statement가 되어야 합니다. 그렇지 않을 경우 Call to 'super()' must be first statement in constructor body 에러가 발생하죠.
class BaseClass {
    int id;
    BaseClass () {
        this.id = 0;
        System.out.printf("Base class is created\n");
    }
}

class DerivedClass extends BaseClass {
    String name;
    DerivedClass () {
        super(); // DerivedClass에서 BaseClass의 Constructor를 Call
        this.name = "Unknown";
        System.out.printf("DerivedClass is created\n");
    }
}
  • 두번째로는 BaseClass()에서 정의된 것을 DerivedClass()에서도 동일하게 처리해주는 방식이 있죠.
class BaseClass {
    int id;
    BaseClass () {
        this.id = 0;
        System.out.printf("Base class is created\n");
    }
}

class DerivedClass extends BaseClass {
    String name;
    DerivedClass () {
        // super(); // DerivedClass에서 BaseClass의 Constructor를 Call
        this.id = 0;
        this.name = "Unknown";
        System.out.printf("DerivedClass is created\n");
    }
}
  • 두 방식이 코드적으로는 다르지만, 실행 결과는 다음과 같이, 동일합니다.
Base class is created
========================
Base class is created
DerivedClass is created

정말 똑같은가?

  • 두 가지 방식은 정말 똑같을까요?

Reference