Глава 9

КЛАССЫ И ИНТЕРФЕЙСЫ

Классами в Object Pascal называются специальные типы, которые содержат поля, методы и свойства. Как и любой другой тип, класс служит лишь образцом для создания конкретных экземпляров реализации, которые называются объектами. Сразу же уточню, что в предшественнике Object Pascal - Turbo Pascal объектами называются типы, имеющие много общего с классами Object Pascal. Однако существенные усовершенствования, внесенные в объектную модель Object Pascal, заставили разработчиков языка ввести для обозначения объектов специальный термин - класс, заимствованный, кстати, из Си++. Для совместимости с ранее разработанными программами системы Turbo Pascal with Objects 7.0 в Object Pascal сохранен тип-объект object, поддерживающий “старую” объектную модель. Поскольку все возможности этой модели доступны классам, я не буду рассматривать ее в этой книге, а “освободившийся” термин объект буду употреблять исключительно для обозначения конкретного экземпляра реализации класса.

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

type

TMyClass = class(TObject) Field: Integer;

end;

var

MyClass: TMyClass;

begin

MyClass ^ .Field := 0; // Ошибка! Следует писать так:

MyClass.Field := 0;

end;