[Effective-Java] Chapter4 #18. 상속보다는 컴포지션을 사용하라
·
Reference/Effective-Java
📌 상속의 문제점 상속은 코드를 재사용하는 강력한 수단이지만, 항상 최선은 아니다. 같은 프로그래머가 통제하는 패키지 안에서라면 상속도 안전한 방법이다. 확장할 목적으로 설계되었고 문서화도 잘 된 클래스(Item 19)라면 마찬가지로 안전하다. 하지만 일반적인 구체 클래스를 패키지 경계를 넘어, 다른 패키지의 구체 클래스를 상속하는 일은 위험하다. (참고로 여기서 '상속'은 클래스가 다른 클래스를 확장하는 구현 상속을 말하고, 인터페이스 상속과는 무관하다.) 1️⃣ 예제1 메서드 호출과 달리 상속은 캡슐화를 깨뜨린다. 상위 클래스는 릴리즈마다 내부 구현이 달라질 수 있으며, 그 여파로 하위 클래스는 아무것도 건드리지 않았는데 오동작할 수 있다. 만약, 상위 클래스 설계자가 확장을 충분히 고려하지 않고, ..