상속 도입 기준

상속은 대체 가능할 때만 힘을 냅니다

공통 코드를 줄이고 싶다는 이유만으로 상속을 고르면 접근 지정자, 생성 순서, 소멸 순서가 곧 설계 부채가 됩니다.

관계파생 객체가 기반 클래스 자리에서 자연스럽게 쓰이는지 확인합니다.
수명기반 생성자부터 파생 소멸자까지 호출 순서를 설명할 수 있어야 합니다.
is-a

종류 관계인지 묻습니다

DogAnimal처럼 기반 타입의 한 종류라면 상속 후보입니다.

access

공개 API를 좁힙니다

public 상속은 인터페이스 약속이고 private 상속은 구현 재사용에 가깝습니다.

override

재정의 의도를 표시합니다

override를 붙이면 오타로 새 함수를 만드는 실수가 컴파일 오류로 드러납니다.

상속 적용 조건공통 규약을 기반 클래스가 제공하고 파생 클래스가 세부 동작을 바꿉니다.
오용 신호단순히 멤버 몇 개를 공유하려고 계층을 만듭니다.
대안부품 관계라면 멤버 객체를 갖는 합성을 먼저 검토합니다.

대체 가능성 상속은 코드 복사 제거보다 “기반 타입으로 다뤄도 의미가 유지되는가”를 먼저 확인하는 설계 도구입니다.