КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Простое наследование
Программирование Объектно-ориентированное Простое наследование описывает родство между двумя классами, один из которых наследует второй (рис. 3.1). Класс, находящийся на вершине иерархии, называется базовым классом. Прочие классы называются производными классами.
Рис.3.1. Простое наследование
Из одного базового класса могут выводиться многие классы. множественное наследование - один класс может наследовать несколько базовых классов.
Рис. 3.2. несколько классов, производных от одного базового класса Производный класс и сам может быть базовым; которые наследуют другие классы. Не смотря на очевидную сложность иерархии классов, изображения на рис. 3.3, все продемонстрированные взаимосвязи используют простое наследование, поскольку каждый производный класс имеет лишь одного родителя. Не существует каких-либо ограничений на число классов, наследующих друг друга. Вы можете строить одни классы на основе других до тех пор, пока вам это не надоест.
Рис. 3.3. Производный класс может Быть базовым классом других производных классов Производный класс наследует из базового данные-члены и функции-члены, но не конструкторы и деструкторы. Пример: на рис. 3.3 производный класс А наследует свойства базового класса в вершине иерархии. Производный класс В наследует кроме этого и новые свойства класса А. Производный класс С наследует свойства верхнего базового класса и производных классов А и В.
позже вы столкнетесь с некоторыми уточнениями этого правила. В общем случае производный класс начинает свое существование с копирования членов базовых классов, включая все члены, наследованные из более далеких родственных классов.
Объявление производных классов ПРИМЕР механизма наследования: //базовый класс ТBase class TBase { private: int count; // закрытые данные класса public: //Конструктор по умолчанию TBase () { count=0; } //встраиваемые функции-члены void SetCount (int n) { count=n } int GetCount(void) { return count; } };
Несмотря на то что члены TBase не имеют никакого практического применения, они очень похожи на те, что используются в типичных классах С++, из которых могут быть выведены новые классы. Члены count содержит закрытые данные класса. Только закрытые функции-члены TBase могут непосредственно ссылаться на count. Конструктор по умолчанию TBase () инициализирует count нулевым значением. Функция-член SetCount()присваивает count новое значение. Функция-член GetCount() возвращает текущее значение count. Для упрощения кода конструктор TBase и две функции должны быть встраиваемыми, не требующими, не требующими отдельной реализации. Предположим, необходим новый класс, имеющий все свойство TBase, но, кроме того, способный увеличивать и уменьшать значение объекта на заданную величину. Вы можете переписать первоначальный класс, но это не всегда приемлемо в больших проектах, особенно если в работе над ними задействовано много программистов. Подобные изменения могут оказаться даже невозможными, если TBase - часть коммерческой библиотека классов, исходные тексты которой не доступны. Вместо изменения. TBase, можно вывести из него новый класс, дополнительно имеющий новые, необходимые вам свойство:
сlass TDerived: public TBase { public: //конструктор производного класса //TDerived() и вызывается //конструктора базового класса TDerived(): TBase() { } void changCount(int n) {SetCount(GetCount() + n); } }; Производный класс назван TDerived. Сразу за именем класса следует двоеточие и одно из ключевых слов public, protected или private. После этих элементов следует имя базового класса (TBase), от которого TDerived получает наследство, на рис. 3.4 иллюстрируется структура класса TDerived и его конструктора.
Рис. 3.4. Структура производного класса Открытые члены открытого класса остаются открытыми в производном классе. Вы можете объявить производный класс следующим образом:
Дата добавления: 2014-01-11; Просмотров: 644; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |