Абстрактным классом называется класс, в котором есть хотя бы
одна чистая виртуальная функция. Чистой виртуальной функцией назы-
вается функция, которая имеет определение:
virtual тип имя_функции (список_формальных_параметров) = 0;
Чисто виртуальный метод должен переопределяться в производ-
ном классе (возможно опять как чисто виртуальный).
Класс, содержащий хотя бы один чисто виртуальный метод, назы-
вается абстрактным. Абстрактные классы предназначены для представле-
ния общих понятий, которые предполагается конкретизировать в произ-
водных классах. Абстрактный класс может использоваться только в каче-
стве базового для других классов. Объекты абстрактного класса создавать
нельзя. При определении абстрактного класса необходимо иметь в виду
следующее:
абстрактный класс нельзя использовать при явном приведении типов,
для описания типа параметра и типа, возвращаемого функцией значения;
допускается объявлять указатели и ссылки на абстрактный класс, если
при инициализации не требуется создавать временный объект;
если класс, производный от абстрактного, не определяет все чисто вир-
туальные функции, он также является абстрактным.
44
Ключи доступа при наследовании. При описании класса в его
заголовке перечисляются все классы, являющиеся для него базовыми.
Возможность обращения к элементам этих классов регулируется с помо-
щью ключей доступа private, protected и public:
class Имя : [private | protected | public] Базовый_класс
{тело класса};
Если базовых классов несколько, они перечисляются через запя-
тую. Ключ доступа может стоять перед каждым классом.
class A {...};
class В {...};
class С {...};
class D: A, protected В, public С {...};
По умолчанию для классов используется ключ доступа private,
а для структур – publiс. Кроме этого, доступность в производном классе
регулируется ключом доступа к базовому классу. Этот ключ указывается
в объявлении производного класса и определяет вид наследования: public,
private или protected.
Открытое наследование сохраняет статус доступа для всех элементов
базового класса.
Защищенное – понижает статус доступа всех элементов базового
класса со статусом public до protected.
Закрытое – понижает статусы доступа всех элементов базового класса
со статусом public и protected до private.
Производные классы наследуют элементы базового класса Person,
но некоторые функции будут выполняться в каждом классе по-своему.
Например, функция show() будет для каждого класса выводить его соб-
ственные поля. Для вызова метода предка из потомка используется опе-
рация доступа к области видимости «::».
Достарыңызбен бөлісу: |