컴포지션은 합성을 뜻한다. 상속은 코드를 재사용하는 강력한 수단이지만 항상 최선은 아니다 잘못 사용하면 오히려 오류를 내기 쉬운 소프트웨어를 만들게 된다 확장을 할 목적으로 설계하였고 문서도 잘 정리가 되어있으면 괜찮다 하지만 구체 클래스를 패키지를 경계를 넘어, 즉 다른 구체 클래스를 상속 받는것은 위험하다. 상속은 캡슐화를 깨뜨린다 다르게 말하면 상위 클래스가 어떻게 구현되느냐에 따라 하위 클래스 동작에 이상이 생긴다. 바로 코드 예를 보자면 직접 HashSet을 상속 받은 코드 import java.util.Collection;import java.util.HashSet;import java.util.Set;public class InstrumentedHashSet extends HashSet ..