pascalabcnet/TestSuite/delegates13.pas

40 lines
505 B
ObjectPascal
Raw Normal View History

2019-12-22 16:58:12 +03:00
var i: integer;
type
t0 = abstract class
procedure p0; abstract;
procedure p2; virtual;
begin
end;
procedure p3;
begin
i := 3;
end;
end;
t1 = class(t0)
procedure p0; override;
begin
i := 1;
end;
procedure p2; override;
begin
i := 2;
end;
end;
procedure p1(p: Action0);
begin
p();
end;
begin
var a := new t1 as t0;
p1(a.p0);
assert(i = 1);
p1(a.p2);
assert(i = 2);
p1(a.p3);
assert(i = 3);
end.