Гибридное наследование в C++: концепции и примеры

Узнайте, что такое гибридное наследование в C++, как оно работает и почему оно полезно. Изучите некоторые примеры гибридного наследования в C++ с помощью фрагментов кода.

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

В процессе наследования объекты одного класса приобретают свойства и поведение другого класса. Здесь новый класс является производным от существующего базового класса. Производный класс-член обычно называется дочерним классом и членом базового класса родительского класса. После создания дочернего класса он наследует все свойства и методы родительского класса.

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

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

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

Часто в реальности программисту необходимо разработать объект, который должен:
1)  обладать всеми качествами своего родителя, а кроме того,
2)  в некоторых аспектах настойчивость имеет особое значение. 

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

Технически ключевое слово «extends» используется для наследования класса. C++ использует символ двоеточия («:») для наследования от класс.

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

Для решения этой проблемы создается новый класс, который расширяет базовый класс и может даже быть производным от другого класса с дополнительными свойствами. Этот метод повышает эффективность и удобство сопровождения кода, позволяя повторно использовать, расширять или изменять характеристики и действия, определенные в разных классах. 

Сложный объект, который плавно сочетает в себе унаследованные признаки и вмещает специализированные атрибуты, создается путем наследования дочернего класса от нескольких классов. Это приводит к замечательной эффективности кода на 20 %, которую легко поддерживать и легко переносить в различных контекстах. Оптимизируя процессы разработки и скорость приложений, программисты могут создавать универсальные и адаптивные объекты с гибридным наследованием в программах на C++.

Виды наследства

Использование комбинации наследования и реализации различаются по целям, в которых создаются классы. В C++ доступны различные типы наследования, перечисленные ниже:

  • Единственное наследование — это когда производный класс наследует свойства и поведение от одного базового класса. Пример: Класс A → Класс B. 

Другими словами, в объектно-ориентированном программировании (ООП) для производного или дочернего класса может быть только один родительский класс.

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

Вот базовая программа гибридного наследования на C++:

Используя пространство имен std, #include <iostream>;

// Базовый класс Animal { public: void eat() { cout \\ «Животное ест» \\ endl;

// Производный класс только с одним наследованием Dog: public Animal { public: void bark() { cout \\ «Собака лает» \\ endl; ;

Функция int main() { Dog myDog; мояСобака.еать(); Унаследовано от класса Animal myDog.bark(); Специально для класса собак.

    возвращается 0;

В этом случае используется одиночное наследование для создания класса Dog из класса Animal. Класс Dog добавляет собственный метод bark() и наследует метод eat() метод.

  • Иерархическое наследование — это когда на основе одного базового класса создается более одного производного класса. Пример: Класс A →  Класс B → Класс C. 
  • Множественное наследование предназначено для получения класса от нескольких базовых классов. Здесь дочерние объекты, создаваемые программистами, будут сочетать аспекты характеристик и функций нескольких родительских классов. Эти объекты следуют своей иерархии базовых классов.  
  • Многоуровневое наследование — это когда дочерний класс является производным от другого производного класса. Эта функция объединяет аспекты нескольких классов и соответствует их иерархии.
  • Гибридное наследование — это гетерогенная функция использования множественного наследования. Здесь дочерний класс получается из одной или нескольких комбинаций одиночного, иерархического и многоуровневого наследования. Это наследование применяется в программах для смешивания различных типов наследования; например, при смешивании одного наследования с множественным наследованием или, возможно, в ситуации, когда несколько наследований смешаны в одной программе.

Простой пример

Здесь класс B и класс C являются производными от базового класса класса A.

Иерархическая классификация автомобилей показывает два класса. И «Бензиновые автомобили», и «Электрические автомобили» произошли от базового класса «Автомобили». 

Гибридное наследование в C++

Могут возникнуть ситуации, когда нам необходимо применить два или более типа наследования в сочетании для разработки программы. Если программа использует более одного типа наследования, она называется гибридным наследованием.

Гибридное наследование — это сочетание простого, множественного и иерархического наследования. Обычно при множественном наследовании класс является производным от двух классов, где один из родительских классов также является производным, а не базовым классом. 

Гибридное наследование в C++ — это наследование, при котором класс является производным от более чем одной формы или комбинации любого наследования. гибридное наследование в C++ также называется многопутевым наследованием, при котором один производный класс может наследовать свойства базового класса по разным путям. Иногда его также называют многопутевым наследованием. Например, этого можно добиться с помощью сочетания многоуровневого и иерархического наследования.

Короче говоря, гибридное наследование — это комбинация двух или более типов наследования. Например, реализовав в одной программе одно- и многоуровневое наследование.

Блок-схема гибридного наследования

Диаграмма представляет собой гибридную комбинацию двух наследств; единое и множественное наследство. Здесь при одиночном наследовании класс B является производным от класса A. Аналогично при множественном наследовании класс D наследуется от нескольких классов. Здесь класс B и класс C. Итак, сочетание одиночного и множественного наследования образует гибридное наследование.

Гибридное наследование применимо в сценариях, где нам необходимо применить более одного наследования в программе.

Синтаксис гибридного наследования в C++

Типичный синтаксис и семантика гибридного наследования в C++ будут выглядеть следующим образом:

Примеры гибридного наследования в C++

Пример 1.  Одиночное + множественное наследование

Давайте посмотрим, как реализовано одиночное и множественное наследование.

 

Каждый блок на этой диаграмме представляет класс, а соответствующая стрелка — наследование класса.

Пример 2: Одноуровневое + многоуровневое наследование

Мы также можем реализовать другие типы наследования, чтобы создать гибридное наследование.

Давайте рассмотрим пример в реальном времени.

Мы получаем подкласс автомобиля из класса Vehicle. Еще один класс характеризует Racing. Когда мы получим финальную сущность как из класса Car, так и из класса Racing, она даст объединенный результат. Этой производной является Ferrari – гоночная машина.

Вот простая программа, иллюстрирующая концепцию гибридного наследования в C++.

Пример кода

Выход

#cplusplus 

Гибридное наследование в C++: концепции и примеры
1.30 GEEK