핌이의 일상

Programming/Java

[Java] 클래스 상속과 생성자

핌이 (Pimgrim) 2023. 12. 22. 23:56

이 프로그램에서는 두 클래스 Super와 Sub이 상속 관계에 있습니다. Super 클래스의 객체를 생성할 때 생성자에 매개변수를 전달하면서, 해당 생성자에서 문자를 출력하고, 상속받은 Sub 클래스에서는 super()를 사용하여 부모 클래스의 생성자를 호출합니다. 결과적으로 “AC”와 “ADB”가 출력됩니다.

class Super {
    // 기본 생성자
    Super() {
        System.out.print('A');
    }
    // 매개변수가 있는 생성자
    Super(char x) {
        System.out.print(x);
    }
}

class Sub extends Super {
    // Sub 클래스의 기본 생성자
    Sub() {
        super();    // Super 클래스의 기본 생성자 호출, 'A' 출력
        System.out.print('B');
    }
    // 매개변수가 있는 생성자
    Sub(char x) {
        this();     // Sub 클래스의 기본 생성자 호출, 'A' 출력
        System.out.print(x);
    }
}

public class codingTest {
    public static void main(String[] args) {
        // 객체 생성 및 초기화
        Super s1 = new Super('C');  // Super 클래스의 매개변수가 있는 생성자 호출, 'C' 출력
        Super s2 = new Super('D');  // Super 클래스의 매개변수가 있는 생성자 호출, 'D' 출력
    }
}

결과:

ACADB

1. Super s1 = new Super('C'); : Super 클래스의 매개변수가 있는 생성자를 호출하여 ‘C’를 출력합니다. 따라서 ‘A’ + ‘C’ = ‘AC’가 됩니다.
2. Super s2 = new Super('D'); : 다시 Super 클래스의 매개변수가 있는 생성자를 호출하여 ‘D’를 출력합니다. 따라서 ‘A’ + ‘D’ = ‘AD’가 출력된 후에, 'B'가 됩니다.

반응형