Java에서 자식 클래스를 생성하면, 부모 클래스 생성자도 자동으로 실행된다는 사실 알고 있었나요?
(저는 몰랐습니다~..🙄)
class Parent {
int x;
Parent() {
this.x = 1000;
System.out.println("Parent x: " + this.x);
}
}
class Child extends Parent {
int x;
Child() {
this.x = 2000;
System.out.println("Child x: " + this.x);
}
}
public class Main {
public static void main(String[] args) {
Child c = new Child();
}
}
Parent x: 1000
Child x: 2000

자바에서는 자식 클래스의 생성자가 호출되기 전에 항상 부모 클래스의 생성자가 먼저 호출된다.
이유는 이렇다고 한다~
class Child extends Parent {
int x;
Child() {
super(); // 👈 부모 생성자 자동 호출 (생략되어 있지만 항상 존재하고 호출됨!)
this.x = 2000;
System.out.println("Child x: " + this.x);
}
}
super()는 부모 클래스의 생성자를 호출하는 키워드다.
명시적으로 적지 않아도 자바가 자동으로 삽입한다.
이렇게 설계된 이유는 객체의 구조적 안정성을 보장하기 위해서라고 한다.