logo
Лабораторная работа 7new

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

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

Наследование позволяет повторно использовать код базового класса в экземплярах производного класса. Концепция повторного использования имеет параллель в живой природе: ДНК можно рассматривать как базовый материал, который каждое порожденное существо повторно использует для воспроизведения своего собственного вида.

Следующий пример иллюстрирует обобщенный синтаксис объявления производного класса. Порядок перечисления секций соответствует расширений привилегий защиты и областей видимости заключенных в них элементов: от наиболее ограниченных к самым доступным.

class className : [<спецификатор доступа>] parentClass {

<0бъявления дружественных классов>

private:

<приватные члены данных>

<приватные конструкторы>

<приватные методы>

protected:

<защищенные члены данных>

<защищенные конструкторы>

<защищенные методы>

public:

<общедоступные свойства>

<общедоступные члены данных>

<общедоступные конструкторы>

<общедоступный деструктор>

<общедоступные методы>

_published:

<общеизвестные свойства>

<общеизвестные члены данных>

<Объявления дружественных функций>

};

Отметим появление новой секции с ключевым словом _published - дополнение, которое C++Builder вводит в стандарт ANSI C++ для объявления общеизвестных элементов компонентных классов. Эта секция отличается от общедоступной только тем, что компилятор генерирует информацию RTTI о свойствах, членах данных и методах объекта и C++Builder организует передачу этой информации Инспектору объектов во время исполнения программы.

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

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