Closed HunkiKim closed 2 years ago
상황 : B클래스에서 A클래스의 doAction() 기능을 사용하고 싶을때
B.doAction()
A클래스의 기능을 상속
해서 사용한다
class B extends A{
@Override
void doAction(){
super.doAction(); // 상속 : B가 A의 하위타입일때, A의 기능을 [모두] 물려받음
}
}
A클래스를 컴포지션
해서 사용한다
class B {
A a;
void doAction(){
// A 에게 기능을 위임
a.doAction(); // 컴포지션 : 다른객체의 인스턴스를 자신의 인스턴스 변수로 포함해서 메서드를 호출하는 기법
} }
책 : 상속은 강력하지만 캡슐화를 해친다. 상속할만한 관계가 아니라면(is-a) 래핑해서 컴포지션으로 사용하자
라고 이해했습니다!
일급 컬렉션도 래퍼클래스에 대해 잘 나타내주는 예라고 생각합니다!!
아이템 18부터 계속 들었던 생각인데 내부에 기능을 위임한다는 것이 정확이 어떤 말인지 이해가 되질 않습니다.. Long같은걸 예로보긴 했는데 정확하게 봐도 위임한다는 것을 잘 모르겠네요.😢