Разница между составом и наследованием (с таблицей)

Оглавление:

Anonim

Благодаря использованию предыдущих версий для создания нового программного обеспечения с использованием концепции повторного использования, в программировании упоминается повторно используемый код. В компаниях, занимающихся компьютерными технологиями, повторное использование кода рассматривается как критически важная функция производительности. В программировании сущностей существует два основных способа определения этих отношений: наследование и композиция.

Состав против наследования

Разница между композицией и наследованием состоит в том, что композиция используется для построения класса, имеющего отношение «имеет-а», а не отношения «есть-а», как в наследовании. Наследование позволяет функциям-членам одного класса становиться собственностью другого без необходимости кодировать их непосредственно в классе.

Наследование классов восстанавливается с составом статьи. Композиция описывается как использование одного объекта в другом. Поскольку легко создавать сложные классы с использованием ранее опубликованных, хорошо спроектированных классов в качестве компонентов, всегда можно использовать объект как поле в другом классе. Все это называется композицией.

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

Таблица сравнения между составом и наследованием

Параметры сравнения

Состав

Наследование

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

Что такое композиция?

Композиция - это форма агрегирования, при которой подразумевается право собственности. Есть зависимость, потому что один объект зависит от другого. Рассмотрим следующие объекты: школьный объект и классный объект. Школьный объект необходим для существования классного объекта. Классный объект поврежден, если школьный объект разрушен. В результате эти два элемента взаимозависимы. Таким образом, это действительно композиция. Другими словами, мы называем что-то композицией, если оно не может существовать без целого.

Еще одна связь между классами, задаваемыми ООП, - это композиция, также известная как отношение has-a. Если каким-то образом характеристики одного объекта должны быть включены в характеристики другого, взаимосвязь требует композиции. Чтобы создать новый класс из родительского класса, каждый объект класса должен быть объявлен как член текущего класса.

Композиция описывается как использование объекта внутри другого объекта. Сущность может регулярно использоваться как поле в любом классе. В композиции они используют сущность, которая является частью класса. Состав элементов, в отличие от наследования классов, непрерывно описывается во время выполнения сущностями, получающими соединения с другими объектами.

Что такое наследование?

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

Если мы хотим создать новый класс, но кажется, что есть один с некоторым кодом, который нам нужен, мы можем извлечь наш новый класс из текущего. Мы могли бы повторно использовать свойства и методы текущего класса вместо того, чтобы писать их сами. Подкласс наследует большинство представителей своего суперкласса. Конструкторы не являются участниками, поэтому они не передаются в подклассы, но функция суперкласса Object () {[собственный код]} может быть вызвана из подкласса.

Основные различия между составом и наследованием

Вывод

Поскольку сложные классы проще построить с использованием ранее написанных, хорошо спроектированных классов, иногда вам может понадобиться использовать объект как поле в другом классе. Вот где появляется возможность композиции. Поскольку наследование позволяет повторно использовать код, расширяя класс с небольшими усилиями, это полезный инструмент для создания отношений между классами.

В целом композиция предпочтительнее, потому что она позволяет использовать объект без потери его внутренних данных, и именно здесь композиция пригодится. Хотя у наследования есть свои недостатки, композиция объектов создает аналогичные проблемы с производительностью с точки зрения формирования и разрушения объектов.

Разница между составом и наследованием (с таблицей)