E2170 非仮想メソッドはオーバーライドできません (Delphi)
エラーと警告のメッセージ(Delphi) への移動
派生クラスの中で,仮想型として宣言されていない基本メソッドをオーバーライドしようとしました。
program Produce; type Base = class procedure StaticMethod; end; Derived = class (Base) procedure StaticMethod; override; end; procedure Base.StaticMethod; begin end; procedure Derived.StaticMethod; begin end; begin end.
{ このコードがエラーになる理由は Base.StaticMethod が仮想メソッドとして宣言されておらず,したがってその宣言をオーバーライドできないためである }
program Solve; type Base = class procedure StaticMethod; end; Derived = class (Base) procedure StaticMethod; end; procedure Base.StaticMethod; begin end; procedure Derived.StaticMethod; begin end; begin end.
{ 基本クラスのソースコードを持っていない場合,このエラーをプログラムから取り除くには派生メソッドの宣言から override の指定を削除するのがただ 1 つの方法である。基本クラスのソースがある場合には,慎重に考慮した後,基本クラスのメソッドを変更して仮想型の 1 つとして宣言する。ただし,そのような変更はプログラムに大きな影響を及ぼすので注意しなければならない }