Использование предыдущих версий для создания нового программного обеспечения с использованием концепции повторного использования в программировании называется повторно используемым кодом.
Основные выводы
- Композиция — это построение сложных объектов путем объединения более простых объектов, а наследование создает новые классы из существующих.
- Композиция обеспечивает большую гибкость при изменении объектов, а наследование обеспечивает более жесткую и иерархическую структуру.
- Композиция предпочтительнее наследования, поскольку она способствует повторному использованию кода, уменьшает связанность и обеспечивает большую абстракцию.
Композиция против наследования
Композиция включает в себя построение сложных объектов из более простых, в результате чего между классами возникает отношение «имеет-а». Наследование позволяет одному классу наследовать свойства и методы другого, устанавливая отношение «есть-а» и способствуя повторному использованию кода.

Поскольку создавать сложные классы, используя в качестве компонентов ранее опубликованные, хорошо продуманные классы, несложно, всегда можно использовать объект в качестве поля внутри другого класса.
В ООП наследование относится к процессу, посредством которого одна сущность приобретает характеристики другой. Это один из наиболее эффективных способов обеспечить повторное использование кода в ООП.
Сравнительная таблица
Параметры сравнения | Состав | наследование |
---|---|---|
Значение | Мы просто объявляем тип, который хотим использовать в композиции, и он может хранить несколько реализаций, которые могут меняться во время выполнения. | Мы определяем класс, который мы принимаем (суперкласс) в наследовании, и его нельзя изменить при выполнении. |
Объединение классов | Возможность комбинировать функциональные возможности различных классов обеспечивается за счет композиции. | В этом случае мы можем расширить только один класс; другими словами, многие классы не могут быть расширены, поскольку Java не поддерживает множественное наследование. |
Функциональность системы | Композиция позволяет нам тестировать функциональность используемых нами классов, не беспокоясь о том, являются ли они родительскими или дочерними классами. | Наследование требует использования родительского класса для проверки дочернего класса. |
Повторное использование кода | Даже код из финальных классов можно использовать повторно благодаря композиции. | Конечный класс не может быть расширен за счет наследования. |
Родство | Это ситуация «есть-а». | Это ситуация «есть-а». |
Что такое композиция?
Композиция — это форма агрегации, в которой подразумевается право собственности. Зависимость возникает потому, что один объект зависит от другого. Рассмотрим следующие объекты: школьный объект и объект класса.
Если каким-то образом характеристики одного объекта должны быть объединены с чертами другого, отношения требуют композиции.
Композиция описывается как использование объекта внутри другого объекта. Сущность может регулярно использоваться как поле в любом классе. В композиции они используют сущность, являющуюся частью класса.

Что такое наследование?
Наследование — это когда новый класс использует атрибуты и методы существующего класса. Этот ранее существовавший класс называется родительским классом, суперклассом или базовым классом.
Если мы хотим создать новый класс, но, похоже, он содержит часть кода, который нам нужен, мы можем извлечь наш новый класс из текущего.

Основные различия между составом и наследованием
- Даже код финальных классов можно использовать повторно благодаря композиции, тогда как финальный класс не может быть расширен посредством наследования.
- Композиция — это ситуация «имеет», тогда как Наследование — это ситуация «есть».