2018-08-10 13:21:09 +03:00
|
|
|
|
type
|
|
|
|
|
|
TBaseClass = abstract class
|
|
|
|
|
|
property p1: byte read write; abstract;
|
2018-08-10 15:22:52 +03:00
|
|
|
|
property p2: byte read; abstract;
|
2018-08-10 13:21:09 +03:00
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
TClass = class(TBaseClass)
|
|
|
|
|
|
b: byte;
|
|
|
|
|
|
property p1: byte read b write b; override;
|
2018-08-10 15:22:52 +03:00
|
|
|
|
property p2: byte read b; override;
|
2018-08-10 13:21:09 +03:00
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
TClass2 = class(TBaseClass)
|
|
|
|
|
|
b: byte;
|
|
|
|
|
|
function getb := b;
|
|
|
|
|
|
procedure setb(value: byte) := b := value;
|
|
|
|
|
|
property p1: byte read getb write setb; override;
|
2018-08-10 15:22:52 +03:00
|
|
|
|
property p2: byte read getb; override;
|
2018-08-10 13:21:09 +03:00
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
var o: TBaseClass := new TClass;
|
|
|
|
|
|
o.p1 := 2;
|
|
|
|
|
|
assert(o.p1 = 2);
|
2018-08-10 15:22:52 +03:00
|
|
|
|
assert(o.p2 = 2);
|
2018-08-10 13:21:09 +03:00
|
|
|
|
o := new TClass2;
|
|
|
|
|
|
o.p1 := 2;
|
|
|
|
|
|
assert(o.p1 = 2);
|
2018-08-10 15:22:52 +03:00
|
|
|
|
assert(o.p2 = 2);
|
2018-08-10 13:21:09 +03:00
|
|
|
|
end.
|