상속은 객체 안에 부모 부분을 먼저 놓고 자식 부분을 덧붙이는 구조다
Dog가 Animal의 한 종류라면, Dog 객체는 Animal 멤버를 포함한 뒤 Dog만의 멤버를 추가합니다. 이 구조가 자연스러울 때 public 상속을 선택합니다.
클래스 정의
Base: Animal공통 상태: name, age
공통 동작: eat(), sleep()
공통 동작: eat(), sleep()
Derived: Dog : public Animal추가 상태: breed
추가 동작: bark(), displayInfo()
추가 동작: bark(), displayInfo()
Dog 객체 안의 배치
Animal 부분부모가 정의한 공통 멤버가 먼저 들어간다.
Dog 확장 부분자식이 추가한 멤버가 같은 객체 안에 붙는다.
질문
예
아니오
“Dog is an Animal”이 자연스러운가?
public 상속 후보
상속보다 합성을 먼저 검토
부모 인터페이스로 자식을 다뤄도 되는가?
다형성으로 확장 가능
코드 재사용 목적이면 위험