Определение членов класса
Определение членов класса
Все члены класса по характеру доступа к ним делятся на четыре категории: закрытые (private), защищенные (protected), открытые (public) и опубликованные (published).
Элементы класса, определенные в разделе public, без каких-либо ограничений открыты для доступа извне программного модуля. Без ограничений доступны также и элементы, определенные в разделе published, однако они отличаются тем, что для них генерируется информация о типах времени выполнения (RTTI — Run Time Type Information). Информация RTTI используется для различных целей: например, для организации отображения значений свойств в инспекторе объектов.
Элементы, определенные в разделе private, недоступны за пределами программного модуля, в котором объявлен класс. Другими словами, закрытые члены класса нельзя вызвать из другого модуля.
Элементы, определенные в разделе protected, доступны в модуле, в котором объявлен класс, а также доступны всем членам классов, производных от данного класса.
По умолчанию при создании программных модулей Object Pascal раздел protected не создается, а раздел published не указывается явно. Все члены класса, которые не определены в разделах private и public, по умолчанию относятся к категории published.
Рассмотрим, к примеру, фрагмент объявления класса TForm (модуль Forms.pas), базового для форм в приложениях Delphi:
TForm = class(TCustomForm) public
procedure ArrangeIcons;
procedure Cascade;
…
published
property Action;
property ActiveControl;
…
end;
В данном случае видно, что класс TForm является производным от класса TCustomForm (реализован в том же модуле Forms.pas) и содержит открытые методы ArrangeIcons, Cascade и т.д., а также опубликованные свойства Action, ActiveControl и т.д.
Примечание
Объявление класса и его членов осуществляется в разделе interface программного модуля, а непосредственная реализация свойств и методов — в разделе implementation (структура программного модуля Object Pascal рассматривается ниже).
Во всех модулях форм, автоматически создаваемых Delphi, можно увидеть исходный код следующего вида:
type TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var Form1: TForm1;
Это означает, что в модуле приложения объявлен класс TForm1, производный от класса TForm, а затем объявлена переменная типа TForm1. Такие переменные — экземпляры класса — называют объектами.Все компоненты Delphi — это объекты, экземпляры того или иного класса.