책 정리/Effective C++ 3rd
항목 32. public 상속 모형은 반드시 "is-a"를 따르도록 만들자
ocean20
2020. 3. 9. 11:10
c++ 객체지향에서 public 상속은 "is-a(…는 …의 일종이다)"를 의미
Derived가 Base로부터 public 상속을 받았다면,
D is a B (D는 B의 일종이다. 하지만, B는 D의 일종이 아니다.)
ex) 학생은 사람의 일종이다, 사람은 학생의 일종이 아니다
새는 날 수 있다.
펭귄은 새이다.
펭귄은 날수 있다?
기본 클래스의 가정이 잘 못되어있다.
여기서 확인할 수 있는것은 public 상속시, 기본 클래스 객체가 가진 모든 것들이 파생 클래스 객체에도 그대로 적용된다고 단정하는 상속이다.
참고
클래스간 맺을 수 있는 관계는 "is -a" 말고도 "has-a", "is-implemented-in-terms-of"방식이 있다. 38,39장에서 알아보자.
이것만은 잊지 말자
- public 상속의 의미는 "is-a"의 의미이다. 기본클래스에 적용되는 모든 것들이 파생클래스 그대로 적용되어야 한다.