부모 클래스 생성자는 자동으로 실행된다?

상곤·2025년 4월 16일

Java

목록 보기
14/22
post-thumbnail

Java에서 자식 클래스를 생성하면, 부모 클래스 생성자도 자동으로 실행된다는 사실 알고 있었나요?
(저는 몰랐습니다~..🙄)

Class

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);
    }
}

Main

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()는 부모 클래스의 생성자를 호출하는 키워드다.
명시적으로 적지 않아도 자바가 자동으로 삽입한다.
이렇게 설계된 이유는 객체의 구조적 안정성을 보장하기 위해서라고 한다.

profile
🫠

0개의 댓글