非抽象类不提供抽象方法的实现

时间:2012-08-09 15:08:20

标签: .net methods abstract-class base-class delphi-prism

我有一个如下的基类。

TMakerObject = class
...
public
    method Clone:TControlObject; virtual; abstract;
end;

我想让方法克隆抽象。因此,基类不需要实现或定义此方法。但是,子类可以定义自己的克隆方法。

但编译器继续给我这个错误 - 非抽象类不提供抽象方法的实现。

如果是这样,那怎么办呢?

谢谢,

1 个答案:

答案 0 :(得分:1)

(这不是Delphi特有的)通过说方法是abstract,你说基类没有为它定义一个实现。因此,语言可能有两种选择:

  • 允许将基类作为非抽象类,并且在基类的实例上对此方法的调用在执行时失败,并且出现“方法未实现”的错误;或
  • 你不允许一个类包含一个抽象方法,除非它本身也被声明为abstract,因此它的实例不存在,并且上述问题永远不会发生。

在执行时间方面倾向于编译时问题,语言设计者选择了第二种选择。