属性覆盖

时间:2009-12-17 18:46:03

标签: delphi

我有一个从TParent派生的TChild类。 TParent具有一个属性MyProp,它正在读取并在数组中设置一些值。当然这个属性是由TChild继承的,但我想在child的属性中添加一些额外的处理。下面的代码更好地解释了我想要做什么,但它无法正常工作。我该如何实施呢?

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;

2 个答案:

答案 0 :(得分:2)

解决。 子函数实现错误。基本上代码有效。 解决方案是:

Result := inherited getStuff(Index);

答案 1 :(得分:0)

我对Delphi非常生疏。你遇到了什么样的“它不起作用”?是否未能编译?

我怀疑inherited调用无法编译,因为父节点实际上没有执行方法。