如何在Delphi(2007)中的子類中覆蓋超類中的函數/過程?停止在Delphi中覆蓋函數
我想標記它,所以它不能改變,我相信有一個最終的關鍵字,但不能爲我的生活找到它的文檔,所以我不是100%肯定這就是我所需要的。
如何在Delphi(2007)中的子類中覆蓋超類中的函數/過程?停止在Delphi中覆蓋函數
我想標記它,所以它不能改變,我相信有一個最終的關鍵字,但不能爲我的生活找到它的文檔,所以我不是100%肯定這就是我所需要的。
如您所想,關鍵字是final
。見http://dn.codegear.com/article/34324和http://blogs.teamb.com/rudyvelthuis/2005/05/13/4311。你也可以將你的班級標記爲密封,以防止任何人繼承它。你需要比7
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的德爾福的支持,而不僅僅是德爾福的.NET