07 наследование 1
.pdf07 – 1
3.НАСЛЕДОВАНИЕ
3.1.Общие сведения
•Наследование
•Класс-наследник
•Базовый класс (БК)
•Производный
•Иерархия классов
•Простое наследование
•Множественное наследование
07 – 2
СВОЙСТВА БКИ ПК
1)Объемы ПК и БК
2)Специфичность ПК
3)Типы наследования:
•открытое (public)
•закрытое (private)
•защищенное (protected)
4)Объект ПК (ОПК) ≡ Объект БК (ОБК) Объект БК (ОБК) ≠ Объект ПК (ОПК) Полиморфизм
07 – 3
5)Спецификатор доступа – protected Защищенные элементы
6)Доступ ПК к закрытым элементам БК
7)Доступ ПК к открытым и защищенным элементам БК
8)ПК не наследует друзей БК
9)Переопределение унаследованной ФЭ в ПК
10)Коммерческие библиотеки классов Пример: MFC (Microsoft Foundition Classes)
07 – 4
3.2. БК и ПК
Пример:
АО “прямоугольник”, “квадрат” и “трапеция” – экземпляры АО “четырехугольник”
АО |
|
Класс |
|
|
|
|
|
прямоугольник |
|
Rectangle |
ПК |
|
|
|
|
четырехугольник |
|
Quadrilateral |
БК |
|
|
|
|
07 – 5
ГРАФИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ НАСЛЕДОВАНИЯ
Quadrilateral
Rectangle
ТЕРМИНЫ-СИНОНИМЫ:
БК – суперкласс ПК – субкласс (подкласс)
|
|
|
07 – 6 |
|
|
|
|
ПРИМЕРЫ БКИ ПК |
|
|
|
|
|
|
|
Имя БК (АО) |
Имя ПК (АО) |
|
|
|
|
|
|
|
|
Worker |
|
FacultyMember (академ. персонал) |
|
|
(сотрудник) |
|
StaffMember (технич. персонал) |
|
|
|
|||
|
Student |
|
Udergraduate (студент) |
|
|
(учащийся) |
|
Graduate (аспирант) |
|
|
|
|||
|
Shape |
|
Circle (круг) |
|
|
(фигура) |
|
Square (квадрат) |
|
|
|
|
|
|
|
|
|
Triangle (треугольник) |
|
07 – 7
ИЕРАРХИЯ КЛАССОВ
NSTUMember
Worker |
Student |
FacultyMember StaffMember
Administrator Teacher Scientist
WorkerStudent |
AdminTeacher TeacherScientist
простое (–––►) и множественное (- - -►) наследование
07 – 8
ОПРЕДЕЛЕНИЕ НАСЛЕДОВАНИЯ:
class Worker: public NSTUMember
{... };
3.3.Защищенные элементы класса
…
07 – 9
3.4.Преобразование указателей БК
вуказатели ПК
•При открытом наследовании ОПК является ОБК
•ОБК никогда не является ОПК !
•Указатель на БК (УБК) можно преобразовать в указатель на ПК (УПК) посредством операции явного приведения типа
07 – 10
Пример:
// БК; представляет точку с коорд-тами (x,y)
class Point {
friend ostream &operator << (ostream &, Point &);
protected:
int x, y; // доступны ФЭ и друзьям ПК
public:
Point(int=0, int=0); void setPoint(int, int);