책 정리/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" 의미이다. 기본클래스에 적용되는 모든 것들이 파생클래스 그대로 적용되어야 한다.