공통 동작에서 출발하기
여러 도형이 면적을 계산하는 연산을 제공하도록 만들 수 있다. 공통의 도형 형식을 두고 원과 사각형이 각자 다른 계산을 제공하는 방식은 상속을 이용한 설계의 한 예다. 실제로 어떤 멤버를 물려받고 바꿀 수 있는지는 언어의 규칙에 따라 다르다.
대신 사용할 수 있는가
파생 형식을 기반 형식으로 다루는 코드에서는 공통으로 약속한 동작을 기대한다. 파생 형식이 그 기대를 깨뜨린다면 문법상 상속이 가능해도 설계상 문제가 될 수 있다. 이름이나 속성이 비슷하다는 이유만으로 적절한 상속 관계가 성립하지는 않는다.
구현 공유와 결합
기반 클래스의 코드를 공유하면 중복을 줄일 수 있지만 내부 동작에 대한 의존성도 생길 수 있다. 기반 클래스가 변경되면서 파생 클래스의 예상과 어긋나는 일이 발생할 수 있다. 계층이 깊어질수록 실제 동작을 이해하기 위해 여러 정의를 따라가야 할 수 있다.
합성과의 선택
다른 객체를 내부에 두고 필요한 일을 맡기는 합성도 재사용 방법이다. 전체와 부품의 관계인지, 기존 형식을 대신할 수 있는 관계인지에 따라 선택이 달라진다. 상속을 쓰지 않는 것과 재사용하지 않는 것은 같은 말이 아니다.
관련 문서
객체 지향 프로그래밍 / 프로그래밍 언어 / 추상화 (컴퓨터 과학) / 자료형