Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ответы на экзаменн-е вопросы за 1-й курс. Препод- Рудой И.Б / Ответы / 05 Понятие наследование в Срр. Примеры

..doc
Скачиваний:
36
Добавлен:
25.05.2014
Размер:
24.06 Кб
Скачать

05 Понятие наследование в Срр. Примеры.

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

Наследование - это способность брать существующий - базовый класс и порождать из него новый класс - потомок, с наследованием всех его атрибутов и поведения. Это пожалуй самая впечатляющая возможность объектно-ориентированного программирования и, возможно, единственное коренное отличие С++ от Си.

Рассмотрим отвлеченный пример из реальной жизни - классификационную схему живых организмов. По этой схеме растительные и живые царства делятся на группы, так называемые типы. Каждый тип, в свою очередь, делится на классы, отряды, семейства и далее. Группы более низкого уровня наследуют характеристики групп более высоких уровней. Так, из утверждения о том, что волк относится к семейству псовых, вытекает сразу несколько положений. Из него следует, что у волков хорошо развиты слух и обоняние, поскольку таковы характеристики псовых. Так как псовые входят в отряд хищных, это утверждение говорит еще о том, что волки питаются мясом. Поскольку хищные относятся к млекопитающим, это утверждение говорит и о том, что волки имеют волосяной покров и регулируемую температуру тела. Наконец, так как млекопитающие являются позвоночными, мы узнаем и то, что у волков есть позвоночник.

Волк -> Псовые -> Хищники -> Млекопитаю

Пример наследования

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

В этом примере из базового класса shape порождается класс circle:

class shape { < Объявление класса

public:

double xo, yo; < Данные (координаты)

shape(double x, double y); < Конструктор

virtual double area(void); < Виртуальная функция элемент

};

Связывание порожденного класса с базовым

v

class circle : public shape { < Объявление порожденного класса

public:

double radius; < Дополнительные данные

double area(void); < Заимствованная функция элемент

circle(double x, double y, double r); < Конструктор