Композиция строит поведение, содержа другие объекты (отношение "has-a") и делегируя им. Наследование получает поведение, расширяя класс ("is-a"). Совет "отдавайте предпочтение композиции" существует потому, что наследование создает тесную, хрупкую связь с базовым классом, в то время как композиция остается гибкой.
Проблема наследования для повторного использования
<T> <T> {
{ add(x); }
T { remove(size() - ); }
}
