상속은 is-a 관계라서


클래스 사이에 진짜 계층적 분류가 있을떄만 사용해야하는 국지적인 범위로 줄어듬


확장방식 자체가 override나 서브클래싱을 함


문제가 OCP 위반이 될 확률이 높음->기존 부모 클래스를 건드려야함


따라서 한번 물려받은 부모클래스 기반을 수정한다는건 자식도 수정해야하고, 기능 제거가 어려움. 즉 매우 강한 결합임


하지만 컴포지션은 has-a 관게임


일반적으로 현대화된 프로그래밍은 객체에 기능/행동 단위를 조립함


따라서 모듈, 또는 전략(인터페이스)를 교체함


따라서 개별 기능 유닛 테스트가 가능함


확장도 유연하고, 유니티에서 시리얼라이즈 필드가 그렇게 모듈 삽입하는거고, DI 패턴도 그런거임