0

次のような基本クラスがあります。

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

メソッドクローンを抽象化したい。したがって、基本クラスはこのメソッドを実装または定義する必要はありません。ただし、サブクラスは独自の clone メソッドを定義できます。

しかし、コンパイラは私にこのエラーを出し続けます-非抽象クラスは抽象メソッドの実装を提供しません。

もしそうなら、これはどのように行われますか?

ありがとう、

4

1 に答える 1

1

(これは Delphi に固有のものではありません) メソッドが isabstractであるということは、基本クラスがその実装を定義していないということです。したがって、言語の動作には 2 つのオプションがあります。

  • 基本クラスを非抽象として持つことが許可されており、基本クラスのインスタンスでこのメソッドを呼び出すと、実行時に「メソッドが実装されていません」という行に沿ったエラーで失敗します。また
  • クラス自体も抽象宣言されていない限り、クラスに抽象メソッドを含めることは許可されていません。そのため、そのインスタンスは存在できず、上記の問題は決して発生しません。

実行時の問題よりもコンパイル時の問題を優先して、言語設計者は 2 番目のオプションを採用しました。

于 2012-08-09T15:36:27.983 に答える