protected 접근 지정
- private 멤버
선언된 클래스 내에서만 접근 가능
파생 클래스에서도 기본 클래스의 private 멤버 직접 접근 불가
- public 멤버
선언된 클래스나 외부 어떤 클래스, 모든 외부 함수에 접근 허용
파생 클래스에서 기본 클래스의 public 멤버 접근 가능
- protected 멤버
선언된 클래스에서 접근 가능
파생 클래스에서만 접근 허용
- 파생 클래스가 아닌 다른 클래스나 외부 함수에서는 protected 멤버를 접근할 수 없다.
생성자 호출 관계 및 실행 순서
A의 파생인 B의 파생 C 클래스
제일 아래 클래스부터 윗 클래스까지 순서대로 호출되고, 그 반대로 실행 및 리턴
실행은 A부터니까 생성자 A -> 생성자 B -> 생성자 C 순서로 출력되고, 소멸자는 그 반대로 실행된다.
컴파일러에 의해 묵시적으로 기본 클래스의 생성자를 선택하는 경우
- 파생 클래스의 생성자에서 기본 클래스의 기본 생성자 호출
매개 변수를 가진 파생 클래스의 생성자는 묵시적으로 기본 클래스의 기본 생성자 선택
- 파생 클래스의 매개 변수를 가진 생성자가 기본 클래스의 기본 생성자 호출
파생 클래스의 생성자에서 명시적으로 기본 클래스의 생성자 선택
상속 관계의 생성자 매개 변수 처리 예
main 함수에서 파생 클래스 C의 매개변수가 있는 생성자가 실행되면서 m = 3*5*2 = 30이 되고,
:B(x,y)를 실행시켜서 B(3,5)가 되고, y = 5가 된다.
그리고 A(x+5)를 실행하면서 A(8)이 호출되어서 x = 8이 된다.
x = 8, y = 5, m = 30
TV, Wide TV, SmartTV 생성자 매개 변수 전달
상속 순서
TV > WideTV > SmartTV
가장 아래 자식 클래스의 생성자가 호출되면서 그 위의 부모 클래스의 생성자가 호출되고, 가장 위의 부모 클래스의 생성자부터 실행된다.