如何阻止超类中的函数/过程在 Delphi (2007) 的子类中被覆盖?
我想标记它以使其无法更改,我相信有一个 final 关键字,但我一生都找不到它的文档,所以我不能 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;
你是对的——它是“最终的”。这个片段显示了它。(来自Marco Cantu的一本书)
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
One thing that surprised me: This feature is supported in Win32 Delphi, not just Delphi for .NET