如何在Delphi(2007)的子类中重写超类中的函数/过程?
我想标记它以便它不能被改变,我相信有一个最后的关键字,但不能为我的生活找到它的文档,所以我不是100%肯定这是我需要的.
Lar*_*ens 17
关键字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;
Run Code Online (Sandbox Code Playgroud)
你是对的 - 它是"最终的".这个片段显示了它.(来自Marco Cantu的一本书)
type
TDeriv1 = class (TBase)
procedure A; override; final;
end;
TDeriv2 = class (TDeriv1)
procedure A; override; // error: "cannot override a final method"
end;
Run Code Online (Sandbox Code Playgroud)
编译给出:
[Pascal Error] Unit1.pas(11): E2352 Cannot override a final method
Run Code Online (Sandbox Code Playgroud)
令我惊讶的一件事:Win32 Delphi支持此功能,而不仅仅是Delphi for .NET
| 归档时间: |
|
| 查看次数: |
1862 次 |
| 最近记录: |