Наследование:
Композиция:
Пример на Java:
java
Отличия можно представить в виде таблицы:
| Критерий | Наследование | Композиция |
|---|---|---|
| Отношение | "является" (is-a) | "имеет" (has-a) |
| Жесткость | Более жесткое | Более гибкое |
| Повторное использование | Через иерархию классов | Через экземпляры объектов |
| Изменение поведения | Переопределение методов | Замена содержащихся объектов |
| Применение | Специализация, расширение функционала | Агрегация, построение из частей |
Композиция предпочтительнее наследования в большинстве случаев для достижения большей гибкости и меньшей зависимости между классами.