언어/C++

[Effective C++] public 상속 모형은 반드시 "is-a(...는 ...의 일종이다)"를 따르도록 만들자

지나가던 개발자 2020. 2. 1. 12:54
반응형

항목 32 : public 상속 모형은 반드시 "is-a(...는 ...의 일종이다)"를 따르도록 만들자

 

public 상속은 반드시 "is-a" 관계를 뜻해야 합니다.

가상 함수의 의미는 "인터페이스가 상속되어야 한다"인 반면, 비가상 함수의 의미는 "인터페이스와 구현이 둘 다 상속 되어야 한다"입니다.

 

public 상속은 기본 클래스 객체가 가진 모든 것들이 파생 클래스 객체에도 그대로 적용된다고 단정하는 상속입니다.

 

클래스들 사이에 맺을 수 있는 관계로 is-a 관계만 있는 것은 아닙니다. 두 가지가 더 있는데, 하나는 "has-a(...는...를 가짐)"이고 또 하나는 "is-implemented-in-terms-of(...는...를 써서 구현됨)"입니다.

 

꼭 잊지 말아야 할 것!

public 상속의 의미는 "is-a(...는 ...의 일종)"입니다. 기본클래스에 적용되는 모든 것들이 파생 클래스에 그대로 적용되어야 합니다. 왜냐하면 모든 파생클래스 객체는 기본 클래스 객체의 일종이기 때문입니다.

반응형