2012-08-09 170 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你說的基類沒有定義實現它。因此,有兩種選擇的語言會如何表現:

  • 你允許有基類的非抽象,並調用該方法在基類的一個實例失敗,在執行時具有錯誤的方法'方法沒有實施';或者
  • 你不允許有一個類包含抽象方法,除非它本身也被聲明爲抽象的,所以它的實例不能存在,並且上述問題不會發生。

針對執行時問題的編譯時問題,語言設計者們選擇了第二種方法。