10

Delphi (2007) で、スーパークラスの関数/プロシージャがサブクラスでオーバーライドされないようにするにはどうすればよいですか?

変更できないようにマークしたいのですが、最終的なキーワードがあると思いますが、私の人生ではそのドキュメントを見つけることができないので、それが必要なものであると100%確信していません.

4

2 に答える 2

19

キーワードはfinal思った通りです。http://dn.codegear.com/article/34324およびhttp://blogs.teamb.com/rudyvelthuis/2005/05/13/4311を参照してください。また、クラスを封印済みとしてマークして、誰もがクラスから継承できないようにすることもできます。7より古いDelphiバージョンが必要です。

type
  TSomeClass = class
  protected
    procedure SomeVirtualMethod; virtual;
  end;

  TOtherClass = class(TSomeClass)
  protected
    procedure SomeVirtualMethod; override; final;
  end;
于 2008-10-03T14:59:59.010 に答える
9

そうです、「最終」です。このスニペットはそれを示しています。(マルコ・カントゥの本から)

type
  TDeriv1 = class (TBase)
    procedure A; override; final;
  end;

  TDeriv2 = class (TDeriv1)
    procedure A; override; // error: "cannot override a final method"
  end;

コンパイルすると次のようになります。

[Pascal Error] Unit1.pas(11): E2352 Cannot override a final method

1 つ驚いたこと: この機能は、Delphi for .NET だけでなく、Win32 Delphi でもサポートされています。

于 2008-10-03T15:07:58.963 に答える