Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Лекции по объектно-ориентированному программированию (С++).doc
Скачиваний:
150
Добавлен:
02.05.2014
Размер:
226.82 Кб
Скачать

Наследование.

Наследование дает возможность повторно использовать код. Технически оно реализуется через создание производных классов (классов – потомков), которые производятся от базовых классов, т.е. классов, лежащих во главе иерархии.

Программный проект описывается одним или несколькими гинеологическими деревом классов. Принцип наследования или порождения новых классов позволяет абстрагировать или инкапсулировать некоторые общие свойства поведения объекта в одном базовом классе, которые будут наследоваться его потомками.

Виды наследования: простое и множественное.

Простое - каждый класс имеет только один родительский класс ближайшего уровня.

Множественное – класс – потомок создается с использованием нескольких базовых классов – родителей.

1) Фигура

квадрат треугольник круг

2) Человек Рыба

женщина

русалка

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

Производные классы. Доступ к базовым классам.

Синтаксис объявления производного класса:

1) class базовый класс { // определение базового класса

}

class имя (производного класса) : спецификатор доступа

имя базового класса

{ // определение производного класса

}

2) class баз. кл.1 { // определение };

class баз. кл.2 { // определение };

------ // ------ // ------ // ------ // ------

class баз. кл.N { // определение };

class произв.кл.: спец. доступа имя баз. кл.1,

спец. доступа имя баз. кл.2, … , спец. доступа имя баз. кл.N

{ // тело класса };

Возможны следующие варианты доступа:

Спецификатор доступа Спецификатор доступа при Режим доступа к

к эл-ам баз. класса наследовании эл-ту в произв. кл.

public public public

protected protected

private недоступен!!!

public protected

protected protected protected

private protected

public private

protected private private

private недоступен!!!

Смотреть Лабораторную работу № 3.

class Student {private :

сhar *name, int age, float dohod;

public : // методы

}

class Stipendia_Studenta: public Student

{private: float razmer,

int kol_month

public: // методы производного класса };

При наследовании каждый класс определяет права доступа к своим элементам и элементам, унаследованным от родителя, а также возможность доступа к ним для следующих в иерархии классов.

Базовый класс скрывает свои элементы с помощью private от всех производных классов. То есть объекты производных классов могут использовать их только через доступные им методы базового класса.

Элементы protected базового класса будут доступны в базовом классе.

Элементы public – везде.