E2136 抽象メソッド '%s' には定義があってはなりません (Delphi)
エラーと警告のメッセージ(Delphi) への移動
<name> を abstract として宣言しましたが,コンパイラはソースファイルの中でそのメソッドの定義を見つけました。abstract 宣言に定義を指定するのは違法です。
program Produce; type Base = class procedure Foundation; virtual; abstract; end; procedure Base.Foundation; begin end; begin end.
{ 抽象メソッドは定義できない。このプログラムをコンパイルすると,Base.Foundation のところでエラーが表示される }
program Solve; type Base = class procedure Foundation; virtual; abstract; end; Derived = class (Base) procedure Foundation; override; end; procedure Derived.Foundation; begin end; begin end.
{ このエラーを解決するには 2 つの手順が必要である。最初に,基本クラスで宣言した抽象手続きの定義を削除しなければならない。次に,基本クラスを拡張し,この抽象手続きを拡張機能の中で override として宣言した後,新しく宣言した手続きの定義を指定する }