정리 상속 : 클래스가 다른 클래스를 확장하는 구현상속을 의미(인터페이스 상속과는 무관) 상속은 코드를 재사용하는 강력한 수단이지만, 항상 최선은 아니다. 메서드호출과 달리 상속은 캡슐화를 깨뜨린다. 기존 클래스를 확장하는 대신, 새로운 클래스를 만들고 private 필드로 기존 클래스의 인스턴스를 참조하게하자 기존 클래스가 새로운 클래스의 구성요소로 쓰인다는 뜻에서 이러한 설계를 컴포지션 이라한다. 새 클래스의 인스턴스 메서드들은 (private 필드를 참조하는 ) 기존 클래스의 대응하는 메서드를 호출해 그결과를 반환한다. 이 방식을 forwarding 이라 하며, 새 클래스이 메서드들을 forwarding method 라 부른다. // 래퍼 클래스 - 상속대신 컴포지션을 사용했다. public cla..