상속
- 상위 클래스 변경 어려움
- 상위 클래스의 변경의 여파가 하위클래스에 따라 전파됨
- 상위 클래스의 기능구현을 알아야 하위클래스에서 재사용할수 있는데 이는 캡슐화를 약하게 만든다.
- 클래스 증가
- 하위 클래스가 점점 증가하는 문제가 생긴다.
- 또 하위 클래스는 어떤 상위 클래스를 상속해야하는지 애매해지는 경우가 많이 생긴다. (각각의 기능이 여러 상위 클래스에 있을때 어떤 클래스를 상속받아야하나?)
- 오용의 가능성
- 상속자체를 오용 할 수 있다.
- 상위 클래스에 정의된 모든 메서드를 사용할수 있어서 하위클래스에서 잘못 사용될 확률이 높음.
상속 대신 조립 or 합성(Composition)으로!
- 여러 객체를 묶어서 더 복잡한 기능을 제공
- 다른 객체를 참조하는 방식으로 조립
- 하위 클래스가 증식하는 문제가 사라지게된다.
- 다른 클래스의 기능을 사용하고 싶으면 객체를 참조하는 필드를 클래스 안에서 선언하면 된다.
=> 상속하기에 앞서 조립으로 풀 수 없는지 검토를 해야한다!