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

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

Видео: Разница между наследованием и составом

Видео: Разница между наследованием и составом
Видео: Что такое агрегация и композиция. Отношения между классами и объектами. ООП. C++ Для начинающих #97 2024, Июль
Anonim

Наследование и композиция

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

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

Как упоминалось выше, наследование - это способность класса наследовать свойства и поведение от родительского класса путем его расширения. Наследование по существу обеспечивает повторное использование кода, позволяя расширять свойства и поведение существующего класса вновь определенным классом. Если класс A расширяет B, то класс B называется родительским классом (или суперклассом), а класс A называется дочерним классом (или производным классом/подклассом). В этом примерном сценарии класс A унаследует все общедоступные и защищенные атрибуты и методы суперкласса (B). Подкласс может дополнительно переопределять (предоставлять новые или расширенные функции методам) поведение, унаследованное от родительского класса.

Наследование представляет собой отношение «является» в ООП. По сути, это означает, что A также является B. Другими словами, B может быть классом с общим описанием определенного объекта реального мира, но A определяет определенную специализацию. В реальной задаче программирования класс Person может быть расширен для создания класса Employee. Это называется специализация. Но вы также можете сначала создать класс Employee, а затем обобщить его и на класс Person (т.е. обобщение). В этом примере Сотрудник будет иметь все свойства и поведение Человека (т.е. Сотрудник также является Лицом) и может также содержать некоторые дополнительные функции (таким образом, Человек не является Сотрудником).

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

Композиция - это способность класса содержать объекты разных классов в качестве данных-членов. Например, класс A может содержать объект класса B в качестве члена. Здесь все общедоступные методы (или функции), определенные в B, могут выполняться внутри класса A. Класс A становится контейнером, а класс B становится содержащимся классом. Композицию также называют контейнеровозом. В этом примере можно сказать, что класс A состоит из класса B. В ООП композиция представляет отношение «есть-а». Важно отметить, что хотя у контейнера есть доступ для выполнения всех общедоступных методов содержащегося в нем класса, он не может изменять или предоставлять дополнительные функции. Когда дело доходит до реальной проблемы программирования, объект класса TextBox может содержаться в классе Form, и, таким образом, можно сказать, что форма содержит TextBox (или, альтернативно, форма состоит из TextBox).

В чем разница между наследованием и композицией?

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

Рекомендуемые: