0

我有一个像下面这样的基类。

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

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

但是编译器一直给我这个错误——非抽象类不提供抽象方法的实现。

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

谢谢,

4

1 回答 1

1

(这不是 Delphi 特有的)通过说方法是abstract说基类没有为它定义实现。因此,对于语言的行为方式,有两种选择:

  • 您可以将基类设置为非抽象类,并且在基类实例上调用此方法在执行时失败,并出现类似于“方法未实现”的错误;或者
  • 不允许一个类包含一个抽象方法,除非它本身也被声明为抽象的,这样它的实例就不能存在,并且上述问题永远不会发生。

语言设计者偏爱编译时问题而不是执行时问题,选择了第二种选择。

于 2012-08-09T15:36:27.983 回答