【问题标题】:non-abstract class does not provide implementation for abstract method非抽象类不提供抽象方法的实现
【发布时间】:2012-08-06 20:32:04
【问题描述】:

我有一个类似下面的基类。

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

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

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

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

谢谢,

【问题讨论】:

  • 我认为您也需要定义类 anstract。我不确定 Delphi 语法,但它应该类似于 TMakerObject = abstract class

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


【解决方案1】:

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

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

相比执行时问题,语言设计者更倾向于编译时问题,因此选择了第二种选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 2013-05-30
    • 2012-09-21
    相关资源
    最近更新 更多