Директивы protected и private
Помимо
объявления элементов класса (полей, методов, свойств) описание класса, как
правило, содержит директивы protected (защищенный) и private (закрытый), которые
устанавливают степень видимости элементов класса в программе.
Элементы
класса, объявленные в секции protected, доступны только в порожденных от него
классах. Область видимости элементов класса этой секции не ограничивается
модулем, в котором находится описание класса. Обычно в секцию protected помещают
описание методов класса.
Элементы
класса, объявленные в секции private, видимы только внутри модуля. Эти элементы
не доступны за пределами модуля, даже в производных классах. Обычно в секцию
private помещают описание полей класса, а методы, обеспечивающие доступ к этим
полям, помещают в секцию
protected.
Ниже
приведено описание класса TPerson, в которое включены директивы управления
доступом.
TPerson = class private
FName: TName; // значение свойства Name
FAddress: TAddress; // значение свойства Address
protected
Constructor Create(Name:TName);
Function GetName: TName;
Function GetAddress: TAddress;
Procedure SetAddress(NewAddress:TAddress);
Property
Name: TName
read GetName;
Property
Address: TAddress
read GetAddress
write SetAddress;
end;
Примечание
Иногда нужно полностью скрыть элементы класса. В этом случае определение класса следует поместить в отдельный модуль, а в программу, которая использует объекты этого класса, поместить ссылку на модуль.