简而言之,你不能。
setter声明为
private
因此后代是不可接近的。但即使它是可访问的,也不会声明为
virtual
所以它不能
override
无论如何。
在这种情况下,后代唯一能做的就是(重新)用自己的setter声明自己的属性(甚至可以重用相同的属性)。
Texture
属性名),例如:
type
TMyCanvasTextureMaterial = class(TCanvasTextureMaterial)
private
function GetMyTexture: TTexture;
procedure SetMyTexture(const Value: TTexture);
public
property Texture: TTexture read GetTexture write SetMyTexture;
end;
但是,访问
纹理
属性通过
TCanvasTextureMaterial
指针不会调用子代的setter,即使它使用了相同的属性名:
var
TM: TCanvasTextureMaterial;
begin
TM := ...; // any TMyCanvasTextureMaterial object
// reading from TM.Texture returns TCanvasTextureMaterial.FTexture,
// it does not call TMyCanvasTextureMaterial.GetMyTexture()
// assigning to TM.Texture calls TCanvasTextureMaterial.SetTexture(),
// it does not call TMyCanvasTextureMaterial.SetMyTexture()
end;