Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по технологиям программирования.pdf
Скачиваний:
53
Добавлен:
02.06.2015
Размер:
4.73 Mб
Скачать

Основные правила использования базовых и производных классов:

Пусть функция F принадлежит базовому классу Б. Тогда в производномклассеП можно:

1)полностьюзаменитьфункциюF (старая Б::F иноваяП::F);

2)доопределить (частичноизменить)функцию F;

3)использоватьфункциюБ::F безизменения.

-Если объявить указатель рБ на базовый класс, то ему можно присвоитьзначениеуказателянаобъектпроизводногокласса;

-указателю рП на производный класс нельзя присвоить значение указателянаобъектбазовоrокласса;

-регулирование доступа к компонентам базового и производного классов осуществляется с помощью атрибутов private, public и protected;

-производный класс может быть в свою очередь базовым.

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

Наследование атрибутов компонентов базового класса:

наследник

 

 

 

 

 

 

 

 

PRIVATE

 

PROTECTED

 

PUBLIC

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PRIVATE

 

PROTECTED

 

PUBLIC

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

:PUBLIC:PROTECTEDPRIVATE родитель

class base {protected: int x; public: char * str;

void f(int, char*);

};

class generate : private base

{

protected: int base::x; public:

char * base::str; base::f;

…}

Множественное наследование

class base1

 

 

 

{public:

 

 

 

Часть унаследованная от класса

int field;

base1

 

 

char * str;

 

 

};

Часть унаследованная от класса

class base2

base2

 

 

{public:

 

 

 

 

 

Собственная

часть

класса

int field;

int data;

generate

 

 

};

 

 

 

 

 

 

class generate :public base1, public base2

{…};

Generate ex; ex.field = 4; ex.base1::filed = 4;

class base

base

 

 

 

 

 

base

 

 

{public:

 

 

 

 

 

 

 

 

 

 

 

int field;

gen1

 

 

 

 

 

gen2

 

 

char *str;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

};

 

 

 

 

 

 

 

 

 

 

 

 

 

 

global

 

 

 

 

 

classgen1 : public base

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{public:

 

 

Часть

унаследованная

от

класса

 

 

floats;

 

 

base

 

 

 

 

 

 

 

};

 

 

Часть

унаследованная

от

класса

classgen2 : public base

 

 

gen1

 

 

 

 

 

 

 

{public:

 

 

Часть

унаследованная

от

класса

char * name;

 

 

base

 

 

 

 

 

 

 

};

 

 

Часть

унаследованная

от

класса

classglobal : publicgen1, publicgen2

gen2

 

 

 

 

 

 

 

{…} ex;

 

 

Собственная часть класса global