|
Наследование и переопределение.Date: 2015-10-07; view: 388.
Наследование – это свойство объектов, позволяющее при построении нового объекта использовать уже созданные ранее объекты. Пусть, например, необходимо построить объектовый тип, управляющий геометрической фигурой – кругом. Структура информации для определения круга очень похожа на описанную выше структуру для точки, поэтому для определения круга будем иметь объектовый тип следующего вида: Type Circle = Object (Point) Radius: integer; end; Описание такого объекта осуществляется с помощью применения наследования: объект Point является родителем, а Circle – потомком. При этом новый тип автоматически получает все поля и методы ранее введенного типа и может их использовать: Var ObCircle: Circle; begin ObCircle.Init (30, 40); ……………………. Таким образом, наследование на языке Turbo Pascal может быть описано таким образом: Type <имя нового объекта> = Object (имя объекта-родителя) < новые поля данных> <новые методы потомка> end; Следует заметить, что один тип может являться предком для произвольного числа типов- потомков, в то время как любой объектовый тип может наследовать поля и методы только одного типа-родителя. Переопределение – это свойство объектов, позволяющее переопределить в объекте-потомке методы объекта-родителя, оставив при этом прежние имена подпрограмм: Type Circle =Object (Point) Radius: integer; Procedure Init (a, b, R: integer); Procedure SwitchOn; Procedure SwitchOff; Procedure Move (dx, dy: integer); Function GetR: integer; End; Procedure Circle.Init (a, b, R: integer); begin Point.Init (a, b); Radius:=R; end; ………………………….. Procedure Circle.SwitchOn; begin v:=true; Graph.Circle (x, y, R); end; ………………………… Из свойства наследования вытекают новые правила присваивания для переменной типа Object: присваивать можно не только объекты эквивалентных типов, но операция присваивания осуществляется также для типов, которые находятся в отношении наследования, причем присваивание происходит в направлении: <родитель>::=<наследник> При этом копируются только те поля, которые являются общими для обоих типов. Как правило, основная часть работы по написанию объектно-ориентированных программ состоит в построении иерархии объектов.
|