Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры печатать.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
379.36 Кб
Скачать

14. Наследование. Производные классы. Синтаксис производного класса. Простое наследование. Множественное наследование. Виртуальные базовые классы. Создание производных классов.

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

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

Любой класс C++ может быть родительским, и любой производный класс будет следовать его описанию. Класс-потомок может иметь дополнительные возможности по сравнению с базовым классом. Если в производном классе перегружается некоторая функция, объявленная в родительском классе, то такая функция называется виртуальным методом

Производный класс описывается следующим образом:

class тип_производного_класса : (public/private/protected) . . .

тип_родительского_класса {....};

Например, для создания производного класса можно написать class retirement:public consumer{....};

В этом примере тег производного класса — retirement. Родительский класс имеет видимость public, и его тег — consumer.

.Пример создания производных классов:

class consumer

{ char name[60],

public:

void data_input(void);};

void consumer::data_itput()

{…}

class airline:public consumer

{ char airline_type[20];

public:

void airline_consumer();};

void airline::airline_consumer()

{ data_input();

…. }

….

Иногда применение множественного наследования предполагает достаточно тесную связь между классами, которые рассматриваются как "братские" базовые классы. Такие классы-братья обычно должны проектироваться совместно. В некоторых случаях классы-братья должны иметь общую информацию. Поскольку С++ - язык со строгим контролем типов, общность информации возможна только при явном указании того, что является общим в этих классах. Способом такого указания может служить виртуальный базовый класс.

Виртуальный базовый класс можно использовать для представления "головного" класса.

Пример:

class link { /* ... */ };

class displayed: public virtual link { /* ... */ };

class task: public virtual link { /* ... */ };

class displayed_task: public displayed, public task { /* ... */ };