我一直理解类助手作为扩展类或部分类。它们的作用就像是对原始基类代码的扩展。如果我将代码的接口部分复制并添加到基类中,然后对实现部分也这样做,那么代码将完全以同样的方式运行,就像使用助手一样。这让我一直理解助手中的多态性,并且它们不能覆盖基类的方法和其他类似的事情。
但是我发现这不是完全正确的,因为如果是这样的话,为什么它们不允许覆盖祖先类-父类的方法呢?
下面是我指的示例(我只会放置标题的代码,不包括实现代码):
那么,为什么下面的代码不正确:
我遇到的错误是:
但是我发现这不是完全正确的,因为如果是这样的话,为什么它们不允许覆盖祖先类-父类的方法呢?
下面是我指的示例(我只会放置标题的代码,不包括实现代码):
type
TAncestor = class
public
procedure Test; virtual;
end;
TBase = class(TAncestor)
public
end;
那么,为什么下面的代码不正确:
THelper = class helper of TBase
public
procedure Test; override;
end;
我遇到的错误是:
在基础类中找不到方法 'Test'!
TBase
进行子类化而不是扩展TBase
。或者在TBase
中重写该方法。 - David Heffernan