5.3 Статические поля илм поля классов

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

Объект может содержать классы или статические поля: эти поля являются глобальными по отношению объекту, и действуют как глобальные переменные, но известны только в области видимости объекта. Различие между статическими переменными и переменными класса это режим, в котором они работают: Статическая переменная (ключевое слово static) будет работать всегда, ключевое слово class будет нужно в режиме {$MODE DELPHI}.

На них можно ссылаться из методов объекта, также можно ссылаться извне объекта, используя полное имя.

Для примера, выход следующей программы

{$mode delphi}

{$static on}

type

cl=object

  l : longint; static;

  class var v : integer;

end;

 

var

cl1,cl2 : cl;

begin

Writeln('Статический');

cl1.l:=2;

writeln(cl2.l);

cl2.l:=3;

writeln(cl1.l);

Writeln(cl.l);

Writeln('Класс');

cl1.v:=4;

writeln(cl2.v);

cl2.v:=5;

writeln(cl1.v);

Writeln(cl.v);

end.

будет следующим:

Статический

2

3

3

Класс

4

5

5

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