43 lines
801 B
ObjectPascal
43 lines
801 B
ObjectPascal
type
|
|
t1 = class
|
|
|
|
property p1: integer read 3; virtual;
|
|
property p2: integer read 3; virtual;
|
|
function f1: integer; virtual;
|
|
begin
|
|
Result := 3;
|
|
end;
|
|
function f2: integer; virtual;
|
|
begin
|
|
Result := 3;
|
|
end;
|
|
end;
|
|
t2 = class(t1)
|
|
|
|
property p1: integer read 5; reintroduce;
|
|
property p2: integer read 5; override;
|
|
function f1: integer; reintroduce; virtual;
|
|
begin
|
|
Result := 5;
|
|
end;
|
|
function f2: integer; override;
|
|
begin
|
|
Result := 5;
|
|
end;
|
|
end;
|
|
t3 = class(t2)
|
|
|
|
function f2: integer; override;
|
|
begin
|
|
Result := 5;
|
|
end;
|
|
end;
|
|
begin
|
|
var o: t1 := new t2;
|
|
assert(o.p1 = 3);
|
|
assert(o.p2 = 5);
|
|
assert(o.f1 = 3);
|
|
assert(o.f2 = 5);
|
|
var o2: t2 := new t3;
|
|
assert(o2.f1 = 5);
|
|
end. |