Объектно-ориентированное программирование - Учебное пособие (А.А. Хусаинов)

4.1. определение производного класса

 

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

 

Struct poly4

{

   float x[4], y[4];

}

 

Следовательно,  прямоугольник задается как структура:

 

Struct rect

{

   float x[4], y[4]; // координаты углов

   float a, b;       // ширина и высота

}

 

Конструктор прямоугольника можно определить как подпрограмму, устанавливающую координаты x[0],x[1],x[2],x[3] и y[0],y[1],y[2],y[3]. Для того чтобы эти два класса выстроить в иерархию, класс прямоугольника определяется следующим образом:

Struct rect : poly4

{

   float a,b;

}

 

Такое определение равносильно перечислению всех полей базового класса. В некоторых случаях оно обладает преимуществами, позволяющими, в частности, создавать не только иерархические деревья, но и более сложные иерархические структуры.

Формат определения производного класса:

 

Class имя : {} имя_1, имя_2, …, имя_N

{

дополнительные поля и функции производного класса

}

 

Если атрибут private или public не указан, то будет установлен private.

При создании объекта производного класса сначала вызываются конструкторы базовых классов, а потом – конструктор производного. Деструкторы вызываются в обратном порядке. Вместо ключевого слова class можно применять struct.