Информатика и технология программирования


Назад: Си++ = Си + классы + объектно-ориентированное - часть 2


{
public:
void f() // "f" переопределяется


{ ...
a::f(); // явный вызов "f" для БК


} // "g" наследуется из БК


void h() {} // собственная функция в ПК


};
void main()
{
a A1;
b B1;
B1.f(); // вызов переопределенной b::f()


B1.g(); // вызов наследуемой a::f()


}

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

Взаимоотношение конструкторов и деструкторов базового и производного классов аналогичны описанным выше:



-если конструктор производного класса определен обычным образом, то сначала вызывается конструктор базового класса без параметров, а затем конструктор производного класса. Деструкторы вызываются в обратном порядке -сначала для производного, затем для базового;



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

Принцип наследования следует воспринимать прежде всего в рамках программирования " от класса к классу" . При проектировании производного класса определяется потенциальное множество объектов с новыми свойствами, отличными от свойств объектов базового класса. Внешне наблюдаемые свойства объекта - это его методы. Поэтому перечисленные ниже варианты наследования методов базового класса в производном нужно воспринимать с более широкой точки зрения - как способы изменения свойств объекта.



1. l " Новое свойство" . Имя определяемого в производном классе метода не совпадает ни с одним из известных в базовом классе. В этом случае это - " новое свойство" объекта, которое объект приобретает в производном классе.


class a {



Начало  Назад  Вперед



Книжный магазин