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" неопределён |