Язык программирования C++
- Муслимова А. Г.
- Уроки по языку программирования С++
- Просмотров: 5921
Язык С++. ООП. Наследование
Наследование - создание нового класса на базе уже имеющегося, или базового класса. Принцип наследования состоит в том, что элементы данных и методы базового класса автоматически становятся элементами данных нового класса.
Существуют два типа наследования:
Простое наследование - когда каждый потомок имеет только один родительский или базовый класс.
Множественное наследование – когда несколько базовых классов используются для создания нового класса - потомка, наследующих свойства всех своих родительских классов.
Формат описания класса при наследовании
Class имя_класса_наследника:спецификатор_доступа имя_базового_класса
{
собственные данные;
собственные методы;
};
Спецификатор доступа (private | protected | public) при объявлении производного класса определяет, какие элементы базового класса наследуются производным классом.
Ограничение доступа для производных классов
Если производный класс наследует базовый с ключом:
- private – все элементы унаследованные от базового класса скрываются для всех следующих потомков и рассматриваются как private текущего класса;
- protected – разрешает последующим потомкам доступ к элементам protected, но закрывает для потомков public, превращая их в protected.
- public – права доступа к элементам базового класса определяются самим базовым классом, как для текущего, так и для всех других потомков;
Конструкторы и деструкторы при наследовании
Замечание: Если используются конструкторы с параметрами, то наследование должно быть с ключом public, чтобы можно было создать объекты произвольных классов.
При создании конструктора производного класса:
- сначала вызывается конструктор базового класса, а затем вызывается конструктор текущего класса
- если базовый класс имеет несколько конструкторов, то необходимый указывается при определении конструктора производного класса;
- если конструктор базового класса имеет параметры, то они включаются в список параметров производного класса.
Деструкторы производного класса:
- не имеют параметров
- сначала вызывается деструктор производного класса, а затем базового
- деструкторы вызываются в порядке, обратном вызовам конструкторов.
Пример: Создать производный класс VF на основе базового класса Figura с добавлением высоты геометрическим фигурам: круг, прямоугольник, трапеция, треугольник. Предусмотреть методы для создания объектов, определения объема фигур. Дописать предыдущую программу, демонстрирующую работу с этими классами.
Подведем итоги:
1. Механизм наследования позволяет реализовать принцип эффективного программирования: написанный код можно многократно использовать. Методы базового или родительского класса могут использоваться объектами всех классов потомков.
2. Наследование реализует принцип программирования от «простого к сложному» или от «общего к частному». При этом базовый класс реализует только самые общие и простые методы, описывающие поведение всех объектов, а каждый производный класс лишь добавляет специфические особенности.