我有一个从TParent派生的TChild类。 TParent有一个MyProp属性,它读取和设置数组中的一些值。当然这个属性是由TChild继承的,但是我想在儿童属性中添加一些额外的处理。下面的代码更好地解释了我想要做的事情,但它不起作用。我怎样才能实现它?属性覆盖
TParent = class...
private
function getStuff(index: integer): integer; virtual;
procedure setStuff(index: integer; value: integer); virtual;
public
property MyProp[index: integer] read GetStuff write SetStuff
end;
TChild = class...
private
procedure setStuff(index: integer; value: integer); override;
function getStuff(index: integer): integer; override;
public
property MyProp[index: integer] read GetStuff write SetStuff
end;
procedure TChild.setStuff(value: integer);
begin
inherited; // <-- execute parent 's code and
DoMoreStuff; // <-- do some extra suff
end;
function TChild.getStuff;
begin
result:= inherited; <---- problem was here
end;
您不必重新声明属性。只要重写getter和setter方法,你就会好起来的。 – jpfollenius 2009-12-17 18:58:07
@Smasher - 对。谢谢。 – Ampere 2009-12-17 21:02:37