Классы, наследование, полиморфизм. Доступ к элементам базового класса в классе-наследнике

Страницы работы

Фрагмент текста работы

БЕЛОРУССКИЙ     ГОСУДАРСТВЕННЫЙ    УНИВЕРСИТЕТ

факультет  радиофизики  и   электроники

кафедра  информатики

ПРАКТИЧЕСКОЕ   РУКОВОДСТВО

к  лабораторному практикуму

КЛАССЫ.  НАСЛЕДОВАНИЕ. ПОЛИМОРФИЗМ

по курсу

«ПРОГРАММИРОВАНИЕ»

2009

МИНСК


Практическое руководство к лабораторному практикуму «КЛАССЫ. НАСЛЕДОВАНИЕ. ПОЛИМОРФИЗМ» по курсу «ПРОГРАММИРОВАНИЕ» предназначено для  студентов, изучающих базовый курс программирования на языке С++, специальностей «Радиофизика», «Физическая электроника», «Компьютерная безопасность».

Руководство содержит некоторый справочный материал, примеры решения типовых задач с комментариями.

Все примеры протестированы  в среде Microsoft Visual C++ 6.0.

Автор будет признателен всем, кто поделится своими соображениями по совершенствованию данного пособия.

Возможные предложения и замечания можно присылать по адресу:

E-mail: Serikova@bsu.by, 


ОГЛАВЛЕНИЕ

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

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

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

Механизм наследования.............................................................................................. 7

Конструктор  и  деструктор  производного класса................................................ 8

Полиморфизм................................................................................................................. 9

Виртуальные функции............................................................................................... 10

Правила описания и создания виртуальных функций....................................... 11

Абстрактные и конкретные классы........................................................................ 12

ПРИМЕР 1.  Синтаксис объявления производного класса............................. 13

ПРИМЕР 2. Доступ к полям базового класса.................................................... 14

ПРИМЕР 3. Простое наследование. Конструктор, деструктор в базовом классе........................................................................................................................ 15

ПРИМЕР 4. Конструктор, деструктор в классе наследнике............................ 16

ПРИМЕР 5. Обращение  к полям базового класса............................................ 18

ПРИМЕР 6.  Иерархия наследования................................................................... 19

ПРИМЕР 7. Множественное наследование....................................................... 21

ПРИМЕР 8. Множественное наследование. Неопределенность................... 23

ПРИМЕР 9. Полиморфизм. Переопределение метода....................................... 25

ПРИМЕР 10. Динамические объекты через указатель на базовый класс..... 26

ПРИМЕР 11. Динамические объекты через указатель на базовый класс.

Виртуальные функции..................................................................... 28

ПРИМЕР 12. Абстрактный класс.......................................................................... 30

ПРИМЕР 13. Вызов метода производного класса из  метода базового класса........................................................................................................................ 32

ПРИМЕР 14. Вызов методов производных классов из  метода базового класса .

Виртуальные функции.................................................................... 34


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

Наследование – принцип ООП, который позволяет на основе одного класса объявить  другой класс.

При наследовании:

·  класс-предок        (родитель, порождающий класс);

·  класс-наследник (потомок, порожденный класс).

В С++ порождающий класс называется базовым, а порожденный – производным.

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

Отношения между родительским классом и его потомками называются иерархией наследования. Глубина наследования не ограничена.

Простым называется наследование, при котором производный класс имеет только одного родителя.

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

Объекту базового класса можно присвоить значение другого объекта этого же класса, а также любого объекта-потомка. 

Указатель и ссылка на базовый класс совместимы по типам соответственно с указателем и ссылкой на производный класс.


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

Простое наследование:

class имя_производного_Класса: [спецификатор наследования] имя_базового класса

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

Спецификатор наследования определяет доступность элементов базового класса в производном классе.

Имеются 3 спецификатора наследования:

·  Public      (открытый)

·  Private     (закрытый)

·  Protected (защищенный )

Защищенные (protected) компоненты и функции-члены интерфейса базового класса напрямую доступны  методам производного класса.

Личные (private) члены базового класса доступны в производном  классе только  через  вызов соответствующих  функций-членов  базового  класса. 

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

class  имя_производного_Класса: [спецификатор наследования1] имя_базового класса1,  

                                                            [спецификатор наследования2] имя_базового класса2, 

                                                              ...

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


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

Доступность элементов базового класса из классов-наследников изменяется в зависимости от спецификаторов доступа в базовом классе и спецификатора наследования.

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

в базовом классе

Спецификатор наследования

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

public

отсутствует

private

public

private

private

public

public

public

public

protected

protected

protected

отсутствует

private

protected

private

private

protected

public

protected

protected

protected

protected

private

отсутствует

недоступны

private

private

недоступны

private

public

недоступны

private

protected

недоступны

Механизм наследования

Класс-потомок наследует структуру (элементы данных) и поведение

Похожие материалы

Информация о работе

Тип:
Методические указания и пособия
Размер файла:
309 Kb
Скачали:
0