책/EFFECTIVE JAVA
[클래스와 인터페이스]아이템18. 상속보다는 컴포지션을 사용하라
미로처럼
2024. 10. 8. 11:10
728x90
상속은 강력하지만 캡슐화를 해친다는 문제가 있다. 상속은 상위 클래스와 하위 클래스가 순수한 is-a 관계일 때만 써야 한다.
is-a 관계일 때도 안심할 수만은 없는게, 하위 클래스의 패키지가 상위 클래스와 다르고, 상위 클래스가 확장을 고려해 설계되지 않았다면 여전히 문제가 될 수 있다. 상속의 취약점을 피하려면 상속 대신 컴포지션과 전달을 사용하자. 특히 래퍼 클래스로 구현할 적당한 인터페이스가 있다면 더욱 그렇다. 래퍼클래스는 하위 클래스보다 견고하고 강력하다.
is-a관계
A는 B다 OOP 의 상속개념
has-a 관계
A는 B를 가진다. A가 B를 가지고 있다.
728x90