1. Любой порожденный класс наследует от родительского все поля данных, поэтому классы Tpolygon и Tellipse автоматически содержат поля Fcolor и FVisible, объявленные в классе TFigure.
2. Доступ к полям предка осуществляется по имени, как если бы они были определены в потомке.
3. В потомках можно определять новые поля, но их имена должны отличаться от имен полей предка.
Наследование свойств и методов имеет свои особенности.
1. Свойство базового класса можно перекрыть (от англ. override) в производном классе, например чтобы добавить ему новый атрибут доступа или связать с другим полем или методом.
2. Метод базового класса тоже можно перекрыть в производном классе, например чтобы изменить логику его работы. Например, в классе Tellipse написать:
Procedure Draw; override;Procedure Hide; override; |
3. В наследнике можно вызвать перекрытый метод предка, указав перед именем метода зарезервированное слово inherited. Когда метод предка полностью совпадает с методом потомка по формату заголовка, то можно использовать более короткую запись. Например:
procedure Tellipse.Draw;begin inherited;//свой кодend; procedure Tellipse.Hide;begin inherited;//Свой кодend; |
4. В конструкторах сначала вызывается конструктор предка, а затем инициализируются дополнительные поля данных. В деструкторах применяется обратная последовательность действий: сначала разрушаются данные, недоступные предку, а затем вызывается унаследованный деструктор.