Borland Pascal. Руководство пользователя


Наследование статических методов


Все показанные до сих пор методы, связанные с типами объек- тов TEmployee, THourly, TSalaried и TCommissioned, являются ста- тическими методами. Однако, со статическими методами связана пpоблема наследования.

Для того, чтобы разобраться с этой проблемой, отложим в сто- рону наш пример с платежной ведомостью и рассмотрим другой упро- щенный и нереалистичный, но показательный пример. Вернемся к кры- латым насекомым. Предположим, что нужно создать программу, кото- рая будет рисовать на экране различные типы летающих насекомых. Предположим, вы решили, что на вершине иерархии будет находиться объект Winged. Пусть вы планируете, что новые типы объектов лета- ющих насекомых как будут строиться как потомки Winged. Например, вы можете создать тип объекта Bee, который отличается от родс- твенных крылатых насекомых тем, что имеет жало и полосы. Конечно, у пчелы есть другие отличающие ее характеристики, но в нашем при- мере это может выглядеть следующим образом:

type TWinged = object(Insect) procedure Init(AX, AY: Integer) { инициализирует экземпляр } рrocedure Show; { отображает крылатое насекомое на экране } рrocedure Hide; { стирает крылатое насекомое с экрана } рrocedure MoveTo(NewX, NewY : Integer); { перемещает крылатое насекомое } end;

tyрe TBee = object(Winged) . . . рrocedure Init(AX, AY: Integer) { инициализирует экземпляр Bee } рrocedure Show; { отображает пчелу на экране } рrocedure Hide; { стирает пчелу с экрана } рrocedure MoveTo(NewX, NewY : Integer); { перемещает пчелу } end;

И TWinged, и TBee имеют по четыре метода. TWinged.Init и TBee.Init инициализируют экземпляр соответствующих объектов. Ме- тод TWinged.Show знает, как рисовать крылатое насекомое на экране, а метод TBee.Show - как рисовать пчелу (крылатое насеко- мое с полосками на теле и с жалом). Метод TWinged.Hide знает, как стирать крылатое насекомое с экрана, а метод TBee.Hide - как стирать пчелу. Два метода Show отличаются друг от друга, равно как и два метода Hide.

Однако, методы TWinged.MoveTo и TBee.MoveTo полностью одина- ковы. В нашем примере X и Y определяют положение на экране.




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



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