2012-08-09 172 views
0

我有一个基类,如下所示。非抽象类不提供抽象方法的实现

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

我想使方法克隆摘要。所以,基类不需要实现或定义这个方法。但是,子类可以定义他们自己的克隆方法。

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

如果是这样,那么这是如何完成的?

感谢,

+0

我想你也需要定义类anstract。我不确定Delphi的语法,但它应该是'TMakerObject = abstract class' – 2012-08-09 15:17:15

回答

1

(这不是针对德尔福)通过说方法是abstract你说的基类没有定义实现它。因此,有两种选择的语言会如何表现:

  • 你允许有基类的非抽象,并调用该方法在基类的一个实例失败,在执行时具有错误的方法'方法没有实施';或者
  • 你不允许有一个类包含抽象方法,除非它本身也被声明为抽象的,所以它的实例不能存在,并且上述问题不会发生。

针对执行时问题的编译时问题,语言设计者们选择了第二种方法。