Методы класса и статические методы |
Вверх Предыдущий Следующий |
Методы класса или методы, объявленные директивой static (статические), являются глобальными по отношению к объекту. В них недоступен неявный указатель 'self'. Недоступны, так-же обычные методы (их нельзя вызывать) и поля объекта. Но могут быть использованы переменные класса. Методы класса или статические методы являются регулярными, они могут быть назначены процедурным переменным. Следующая программа демонстрирует это. Закомментированные операторы компилироваться не будет. {$APPTYPE CONSOLE} {$IFDEF FPC}{$MODE DELPHI}{$H+}{$ENDIF} type TTest = object const Epsylon = 100; var f : integer; class var cv1,cv2:integer; procedure myproc; class procedure testproc; class procedure testproc2;static; procedure testproc3; static; end;
procedure TTest.myproc; begin cv1:=0; f:=1; end;
class procedure TTest.Testproc; begin cv1:=1; // f:=1; end;
class procedure TTest.Testproc2; begin cv1:=2; // f:=1; end;
procedure TTest.Testproc3; begin cv1:=3; // f:=1; end;
Var P : Procedure; begin P:=@TTest.Myproc; P:=@TTest.Testproc; P:=@TTest.Testproc2; P:=@TTest.Testproc3; end. Раскоментируюте любой оператор и попытка компиляции приведёт к ошибке компиляции. ocv.pp(32,6) Error: Only class methods, class properties and class variables can be accessed in class methods ocv.pp(32,6) Ошибка: В методах класса доступны только методы класса, свойства класса и переменные класса |