Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Листинг 5.15. Пример создания и разрушения объекта ⇐ ПредыдущаяСтр 5 из 5 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 представлены классы, образующие иерархию. Один из классов -Класс А — является родительским для всех остальных. Соответственно, если некоторая переменная описана как ссылка на экземпляр Класс А, то на самом деле она может указывать еще и на Класс Б, и на Класс В.
|