Тема 3. Наследование

Каждый класс представляет собой некую сущность со своими свойствами, изменение которых позволяет создавать все многообразие объектов данного класса. Это входит в понятие объектно-ориентированного программирования (ООП) – полиморфизм.

Рассмотрим теперь такое понятие ООП, как наследование, то есть порождение нового класса от уже существующего. При этом все элементы класса-предка, размещенные в зонах public и protected будут доступны в классе-потомке. Элементы класса, размещенные в зоне private доступны только самому классу.

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

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


 class <Имя класса потомка> : [модификатор видимости] <Имя класса предка>
 {
 ...
 <описание класса>
 ...
 };
 

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

В классе "телефон с автоответчиком" достаточно описать методы и поля, присущие автоответчику:

Тема 3.2 Нотация языка UML

Для того, чтобы представлять иерархию классов, а также отношения между классами в более удобной и наглядной форме, рекомендуется использовать язык UML (Unified Modelling Language - унифицированный язык моделирования).

Рекомендуем ознакомиться с нотацией языка UML для описани диаграммы классов:

Для представленных классов можно составить следующую диаграмму классов: