【发布时间】:2012-08-06 21:24:36
【问题描述】:
我有一个被继承两次的基地。第二个子类没有为方法克隆提供任何签名,但第三个子类提供并定义方法克隆如下。
TControlObject = abstract class
...
public
method Clone:TControlObject; virtual; abstract;
end;
TGateControl = class(TControlObject)
...
public
...
end;
TAndControl = class(TGateControl)
public
method Clone:TControlObject; override;
end;
但是,编译器会引发一个错误,即 TGateControl 类不提供克隆方法的实现。由于 TGateControl 是从 TControlObject 继承的,而 TAndControl 类是从 TGateControl 继承的,因此应该自动为基类 clone 方法覆盖方法 clone。我说的对吗?
提前致谢,
【问题讨论】:
-
代码中的 TMakerObject 应该是 TControlObject 吗?如果没有,为什么要为 TMakerObject 提供类签名?
-
是的,犯了一个错误。这就是当您开始一直复制和粘贴时会发生的情况 LOL
标签: .net inheritance abstract-class base-class delphi-prism