**Composition(합성)**은 다른 객체를 보유하고("has-a" 관계) 그에게 위임하여 동작을 구성합니다. **Inheritance(상속)**는 class를 확장하여("is-a") 동작을 획득합니다. "composition을 선호하라"는 조언이 존재하는 이유는, inheritance가 기반 class와 강하고 깨지기 쉬운 결합을 만드는 반면 composition은 유연하게 유지되기 때문입니다.
재사용을 위한 inheritance의 문제
java
<T> <T> {
{ add(x); }
T { remove(size() - ); }
}
