Delphi (2007) で、スーパークラスの関数/プロシージャがサブクラスでオーバーライドされないようにするにはどうすればよいですか?
変更できないようにマークしたいのですが、最終的なキーワードがあると思いますが、私の人生ではそのドキュメントを見つけることができないので、それが必要なものであると100%確信していません.
キーワードは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;
そうです、「最終」です。このスニペットはそれを示しています。(マルコ・カントゥの本から)
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 でもサポートされています。