상속은 대체 가능한 종류 관계야
서브클래스가 부모가 기대되는 자리에 들어가 같은 약속을 지킬 때 상속이 자연스러워. super()는 이름 붙인 부모를 직접 부르는 대신 MRO의 다음 구현에 협력하며, 초기화와 메서드를 덮어쓰거나 앞뒤로 확장할 수 있어.
재사용만을 위해 상속하지 마
객체가 다른 객체를 가지고 일을 맡기는 관계라면 합성이 더 선명해. 내부 부품을 바꾸고 시험하기 쉽고, 부모의 숨은 상태와 수명에 묶이지 않아.
객체는 정체성과 책임이 있을 때 태어나
객체지향은 모든 계산을 클래스로 감싸는 규칙이 아니야. 지속되는 정체성과 지켜야 할 상태 변화가 있으면 객체를 만들고, 순수한 변환은 함수로 두는 선택도 좋은 객체 설계야.