책/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