java中final類 跟final方法

luxika發表於2011-10-08
final方法
將方法宣告為final那有兩個原因,第一就是說明你已經知道這個方法提供的功能已經滿足你要求,不需要進行擴充套件,並且也不允許任何從此類繼承的類來覆寫這個方法,但是繼承仍然可以繼承這個方法,也就是說可以直接使用。第二就是允許編譯器將所有對此方法的呼叫轉化為inline(行內)呼叫的機制,它會使你在呼叫final方法時,直接將方法主體插入到呼叫處,而不是進行例行的方法呼叫,例如儲存斷點,壓棧等,這樣可能會使你的程式效率有所提高,然而當你的方法主體非常龐大時,或你在多處呼叫此方法,那麼你的呼叫主體程式碼便會迅速膨脹,可能反而會影響效率,所以你要慎用final進行方法定義。

final類
當你將final用於類身上時,你就需要仔細考慮,因為一個final類是無法被任何人繼承的,那也就意味著此類在一個繼承樹中是一個葉子類,並且此類的設計已被認為很完美而不需要進行修改或擴充套件。對於final類中的成員,你可以定義其為final,也可以不是final。而對於方法,由於所屬類為final的關係,自然也就成了final型的。你也可以明確的給final類中的方法加上一個final,但這顯然沒有意義。

相關文章