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

Статья разделена на следующие подтемы:

Зачем и когда использовать наследование?

Способы наследования

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

Зачем и когда использовать наследование

Рассмотрим группу транспортных средств. Вам нужно создать классы для автобуса, автомобиля и грузовика. Методы fuelAmount(), capacity(), applyBrakes() будут одинаковыми для всех трех классов. Если мы создадим эти классы, избегая наследования, нам придется написать все эти функции в каждом из трех классов, как показано на рисунке ниже:

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

Используя наследование, мы должны написать функции только один раз вместо трех, так как мы унаследовали остальные три класса от базового класса (транспортное средство).

Способы наследования

  1. Общий режим: если мы получаем подкласс из общедоступного базового класса. Тогда открытый член базового класса станет общедоступным в производном классе, а защищенные члены базового класса станут защищенными в производном классе.
  2. Защищенный режим: если мы получаем подкласс из защищенного базового класса. Тогда как открытые члены, так и защищенные члены базового класса станут защищенными в производном классе.
  3. Частный режим: если мы получаем подкласс из базового класса Private. Тогда как открытые, так и защищенные члены базового класса станут частными в производном классе.

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

Типы наследования

  1. Одиночное наследование. При одиночном наследовании класс может наследовать только от одного класса. то есть один подкласс наследуется только одним базовым классом.
  2. Многоуровневое наследование. В этом типе наследования производный класс создается из другого производного класса.

3. Иерархическое наследование. В этом типе наследования более одного подкласса наследуется от одного базового класса. т. е. из одного базового класса создается более одного производного класса.

4. Множественное наследование. Множественное наследование — это функция C++, при которой класс может наследоваться от более чем одного класса. т. е. один подкласс наследуется более чем от одного базового класса.

5. Гибридное (виртуальное) наследование. Гибридное наследование реализуется путем объединения нескольких типов наследования. Например: сочетание иерархического наследования и множественного наследования.
На изображении ниже показано сочетание иерархического и множественного наследования:

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

Что еще нужно узнать об ООП:

❤ ❤ Спасибо, что прочитали эту статью ❤❤

Если я что-то не так? Дай мне знать в комментариях. Я хотел бы улучшить.

Хлопайте 👏 Если вам поможет эта статья.