6.2.2 Переменняе/поля класса

Вверх  Предыдущий  Следующий

Подобно объектам, класс может содержать статические поля или переменные класса: эти поля или переменные являются глобальными по отношению к классу, и действуют как глобальные переменные, но видны только как часть класса. На них можно ссылаться из методов класса, но можно также ссылаться из вне класса, используя полное имя (имя класса).

Опять же, есть два способа определения переменных класса. Первый из них равносилен тому, как это делается в объектах, используя статический модификатор:

Например, вывод следующей программы будет такой же, как вывод версии с использованием объекта:

{$mode objfpc}

type

cl=class

  l : longint;static;

end;

var

cl1,cl2 : cl;

begin

cl1:=cl.create;

cl2:=cl.create;

cl1.l:=2;

writeln(cl2.l);

cl2.l:=3;

writeln(cl1.l);

Writeln(cl.l);

end.

Вывод будет следующий:

2

3

3

Обратите внимание, что последняя строка кода ссылается на сам класс (cl), и не экземпляр класса (cl1 или cl2).

Кроме статического поля, в классах может быть применён class var. Подобно тому, как поля могут быть определены в блоке переменных, переменные могут быть объявлены в блоке var класса:

{$mode objfpc}

type

cl=class

class var

  l : longint;

end;

Это определение эквивалентно предыдущему.