6.8 Вложенные типы, константы и переменные

На верх  Назад  Вперёд

Определение класса может содержать раздел описания типов, констант и переменных. Разделы типов и констант действуют также, как такие же разделы в модуле или реализации метода/функции/процедуры. Переменные действует как обычные поля класса, кроме того что они находятся в разделе class var (переменных класа), что означает, что они действуют как если бы они были определены на уровне модуля, в пределах пространства имен класса (6.2 Обычные и статические поля).

Тем не менее, видимость этих разделов имеет значение: private и protected (строгие (private strict) или нет) константы, типы и переменные могут использоваться только там, где допускает их область видимости.

Типы public могут использоваться за пределами класса при использовании их полного имени:

type

TA = Class(TObject)

Public

  Type TEnum = (a,b,c);

  Class Function DoSomething : TEnum;

end;

 

Class Function TA.DoSomething : TEnum;

begin

Result:=a;

end;

 

var

E : TA.TEnum;

 

begin

E:=TA.DoSomething;

end.

В то время как

type

TA = Class(TObject)

Strict Private

  Type TEnum = (a,b,c);

Public

  Class Function DoSomething : TEnum;

end;

 

Class Function TA.DoSomething : TEnum;

begin

Result:=a;

end;

 

var

E : TA.TEnum;

 

begin

E:=TA.DoSomething;

end.

Не будет компилироваться и вернет ошибку:

tt.pp(20,10) Error: identifier idents no member "TEnum"

tt.pp (20,10) Ошибка:Идентификатор "TEnum" неопределён