{$mode objfpc} type tobject2 = class i : longint; procedure y; constructor create; class procedure x; class procedure v;virtual; end; procedure tobject2.y; begin Writeln('Procedure y called'); end; class procedure tobject2.v; begin end; class procedure tobject2.x; begin v; end; constructor tobject2.create; begin end; type tclass2 = class of tobject2; var a : class of tobject2; object2 : tobject2; begin a:=tobject2; a.x; tobject2.x; object2:=tobject2.create; object2:=a.create; end.