152
объектах данного класса и унаследованных из него классов (потомках).
Публичные члены public доступны отовсюду.
Рассмотрим наследование в С++ на следующем примере. Определим класс
студент
(student). Никто не будет, вероятно, спорить с тем, что
студент — человек. Соответственно, было бы удобно унаследовать класс
student
от класса chelovek. Записать это на языке С++ можно
следующим образом:
//
класс студент, унаследованный от человека
class student:public chelovek
{
char Gruppa[25]; //
группа
float srball; //
средний балл
float stipendia; //
размер стипендии
};
Все атрибуты человека — фамилия, имя, отчество, год рождения —
сохраняются и у студента. В то же время для студента указываются еще
группа (Gruppa) и успеваемость, выражаемая средним баллом, и может
указываться стипендия.
Во многих языках программирования возможно лишь одиночное
наследование, когда подкласс имеет ровно один суперкласс. В языке
программирования С++ поддерживается множественное наследование.
Поясним этот механизм на примере.
Рассмотрим класс
автомобиль. С одной стороны, автомобиль можно
рассматривать как транспортное средство. Важнейшими свойствами для
транспортного средства являются тип, вместимость, мощность, скорость,
расход топлива и т. д. С другой стороны, автомобиль — недешевый товар,
для которого весьма важны цена, марка (производитель), цвет (особенно
для покупательниц женского пола, чтобы соблюсти гармонию с цветом
туфель). Определим два класса — транспортное средство и товар:
//
транспортное средство
class trans
{
float skorost; //
скорость
float moshnost; //
мощность
int vmestimost; //
вместимость
};
//
товар
class tovar
{
153
Автомобиль
Транспорт
Товар
-
Тип
(
грузовой/пассажирский
)
-
скорость
-
вместимость
-
проходимость
-
цена
-
цвет
-
марка
-
год выпуска
-
качество
char cwet[25]; //
цвет
char proizvoditel[50]; //
производитель
float cena; // цена
};
Класс
автомобиль, выступающий одновременно в двух ипостасях — как
транспортное средство и товар, может быть определен путем наследования
от этих двух классов (рис. 25):
Рис. 25
// автомобиль — пример
множественного наследования
class automobile: trans,tovar
{
};
При этом объекты класса automobile будут иметь все атрибуты как
транспортного средства, так и товара.
Как уже говорилось, в унаследованных классах методы базового класса
могут быть уточнены —
переопределены. При этом функция, которая
изменяется в наследуемом классе, называется виртуальной, и перед ее
именем в объявлении базового класса необходимо поставить ключевое
слово virtual.
Рассмотрим переопределение функций на примере базового класса
Достарыңызбен бөлісу: