java 方法呼叫繫結

weixin_33884611發表於2017-11-08

將一個方法呼叫同一個方法主體關聯起來被稱作繫結。若在程式執行前進行繫結(由編譯器和聯結器實現),叫做前期繫結。讀者可能從來沒有聽說過這個術語,因為它在程式導向語言中不需要選擇就預設的繫結方式。例如C語言有一種方法呼叫,那就是前期繫結。後期繫結也叫做動態繫結或是執行時繫結,它的含義是在執行時根據物件的型別進行繫結。如果一種語言想實現後期繫結,那就必須具有某種機制,以便在執行時能判斷出物件的型別,從而呼叫恰當的方法。也就是說,編譯器一直不知道物件的型別,但是方法呼叫機制能夠找到正確的方法體,並加以呼叫。後期繫結機制隨程式語言的不同而不同,但是隻要想一下就會知道,不管怎樣都必須在物件中安置某種“型別資訊”。

Java中除了static方法和final方法(private方法屬於final方法)之外,其他的方法都是後期繫結。這意味著通常情況下,我們不必判定是否應該進行後期繫結,因為他會自動發生。有時候,將某個方法宣告為final,可以用來防止他人覆蓋該方法。但是更重要的一點或許是:這樣做可以有效的關閉“後期繫結”,或者說是告訴編譯器不需要動態繫結。這樣,編譯器就能夠為以final方法呼叫生成更有效的程式碼。然而,大多數情況下,這樣做對程式的效能不會有什麼改觀。所以,最好根據設計來決定是否使用final,而不是根據試圖提高效能的目的來使用final。









本文轉自NewPanderKing51CTO部落格,原文連結: http://www.cnblogs.com/newpanderking/p/4199208.html,如需轉載請自行聯絡原作者








相關文章