Листинг 5.15. Пример создания и разрушения объекта



unit Geom4;

Interface

Type

TGeomFigure = class       {Заголовок класса TGeomFigure, класс автоматически является наследником класса TObject}

Protected

 Color: Integer;          {Описание свойства с областью видимости protected}

Public

Constructor Create(aColor: Integer);{Заголовок конструктора (область видимости public) }

 Destructor Destroy; override;{Заголовок деструктора (область видимости public) }

End;

Implementation            {Заголовок описательной части конструктора}

Constructor TGeomFigure.Create;

Begin

 Inherited Create;               {Вызов конструктора родительского класса}

Color := aColor;                       {Инициализация свойства, которая не

может быть выполнена в родительском

классе, так как свойство Color

описано в классе TGeomFigure}

end;

Destructor TGeomFigure.Destroy;                      {Заголовок описательной

части деструктора}

Begin

Inherited Destroy;                 {Вызов деструктора родительского класса}

end;

Procedure UsingFigure;                    {Описание процедуры, использующей объект класса TGeomFigure}

Var

Figure: TGeomFigure;

Begin

Figure := TGeomFigure.Create(3); {Создание экземпляра класса TGeomFigure}

 

Figure.Draw;                           {Вызов метода Draw}

Figure.Color:= 13;               {Изменение значения свойства Color}

Figure.Free; {Разрушение объекта, автоматический вызов деструктора Destroy}

end;

End.

 

ПОЛИМОРФИЗМ

Совместимость объектов

 

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

Экземпляр
Класс А  
На рис. 5.1 представлены классы, образующие иерархию. Один из классов -Класс А — является родительским для всех остальных. Соответственно, если некоторая переменная описана как ссылка на экземпляр Класс А, то на самом деле она может указывать еще и на Класс Б, и на Класс В.

 

 

Экземпляр
Класс Б
 


Дата добавления: 2018-04-04; просмотров: 121;