之所以要使用final 方法,可能是出于對兩方面理由的考慮。第一個是為方法“上鎖”,防止任何繼承類改
變它的本來含義。設計程序時,若希望一個方法的行為在繼承期間保持不變,而且不可被覆蓋或改寫,就可
以采取這種做法。
采用final 方法的第二個理由是程序執(zhí)行的效率。將一個方法設成final 后,編譯器就可以把對那個方法的
所有調用都置入“嵌入”調用里。只要編譯器發(fā)現(xiàn)一個final 方法調用,就會(根據它自己的判斷)忽略為
執(zhí)行方法調用機制而采取的常規(guī)代碼插入方法(將自變量壓入堆棧;跳至方法代碼并執(zhí)行它;跳回來;清除 計算機愛好者www.boydavid.com
堆棧自變量;最后對返回值進行處理)。相反,它會用方法主體內實際代碼的一個副本來替換方法調用。這
樣做可避免方法調用時的系統(tǒng)開銷。當然,若方法體積太大,那么程序也會變得雍腫,可能受到到不到嵌入
代碼所帶來的任何性能提升。因為任何提升都被花在方法內部的時間抵消了。Java 編譯器能自動偵測這些情
況,并頗為“明智”地決定是否嵌入一個final 方法。然而,最好還是不要完全相信編譯器能正確地作出所
有判斷。通常,只有在方法的代碼量非常少,或者想明確禁止方法被覆蓋的時候,才應考慮將一個方法設為
final。
類內所有private 方法都自動成為final。由于我們不能訪問一個private 方法,所以它絕對不會被其他方
法覆蓋(若強行這樣做,編譯器會給出錯誤提示)?蔀橐粋private 方法添加final 指示符,但卻不能為 電腦技術www.boydavid.com
那個方法提供任何額外的含義 本文出自:億恩科技【1tcdy.com】
服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]
|