如何在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;
你是对的 - 它是"最终的".这个片段显示了它.(来自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
令我惊讶的一件事:Win32 Delphi支持此功能,而不仅仅是Delphi for .NET