Принцип наследования

Вторым основным принципом объектно-ориентированного программирования является наследование. Смысл его в том, что если вы желаете создать новый класс, лишь немногим отличающийся от уже описанного, то нет необходимости переписывания заново существующих полей и методов. Достаточно просто объявить, что новый класс порождается от существующего type TNewClass = class (TOldClass), т.е. является потомком или дочерним классом старого класса, называемого предком или родительским классом. При этом к новому классу автоматически (по умолчанию) будут добавлены все поля, методы и свойства старого класса. Поэтому, при описании потомка достаточно просто указать новые, дополнительные поля, методы и свойства. Если в описании нового класса имя предка не указано (как в примерах выше) то новый класс порождается от класса TObject, ближними или далекими потомками которого являются все остальные классы. Кстати, методы Create, Free и Destroy наследуются именно от класса TObject. Если имеет место совпадение имен новых и унаследованных полей и методов, то говорят, что они перекрываются. Рассмотрим пример перекрытия полей и статических методов: type T1 = class a: integer; procedure SetA(Value:integer); end; T2 = class (T1) a: real; procedure SetA(Value: real); end;... procedure T1.SetA(Value:integer); begin a:=Value; end; procedure T2.SetA(Value:real); begin a:=0; inherited SetA(Round(Value)) end;

В этом примере разные методы с именем SetA присваивают значения разным полям с именем a. В классе потомке одноименные поля и методы не наследуются, а перекрываются.

Однако, если перекрытое поле предка недоступно вообще, то перекрытый метод доступен при указании зарезервированного слова inherited


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: