Директиви 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;

Примітка

Іноді потрібно повністю приховати елементи класу. У цьому випадку визначення класу слід помістити в окремий модуль, а в програму, яка використовує об’єкти цього класу, помістити посилання на модуль.