생성자의 오버로딩 (Overloading)

2024. 7. 17. 21:27정보처리,전산/JAVA

반응형
public class Main {
    public static void main(String[] args) {
        P p1 = new C();             // 부모 인자 없는 생성자 먼저 호출 후 C 생성자 찾아감
        P p2 = new C(10);           // super(a) 부모 방문 후 C 생성자 호출
        P p3 = new C(20, 30);       // super(a) 부모 방문 후 C 생성자 호출
        P p4 = new D();             // 부모 인자 없는 생성자 먼저 호출 후 D 생성자 호출
        P p5 = new D(5);            // super(a) 부모 방문 후 D 생성자 호출
        P p6 = new D(15, 25);       // super(a) 부모 방문 후 D 생성자 호출
    }

    static class P {
        P() {
            System.out.println("A"); // P의 기본 생성자
        }

        P(int a) {
            System.out.println("B"); // P의 매개변수 생성자
        }
    }

    static class C extends P {
        C() {
            System.out.println("C"); // C의 기본 생성자
        }

        C(int a) {
            super(a);                 // P의 매개변수 생성자 호출
            System.out.println("D");  // C의 매개변수 생성자
        }

        C(int a, int b) {
            super(a);                 // P의 매개변수 생성자 호출
            System.out.println("E");   // C의 매개변수 생성자
        }
    }

    static class D extends P {
        D() {
            System.out.println("F"); // D의 기본 생성자
        }

        D(int a) {
            super(a);                 // P의 매개변수 생성자 호출
            System.out.println("G");   // D의 매개변수 생성자
        }

        D(int a, int b) {
            super(a);                 // P의 매개변수 생성자 호출
            System.out.println("H");   // D의 매개변수 생성자
        }
    }
}

 

 

반응형