將一個方法調用同一個方法主體關聯起來被稱做綁定。若在程序執行前進行綁定(由編譯器和鏈接器實現),叫作前期綁定。讀者可能歷來沒有據說過這個術語,由於它在面向過程語言中不須要選擇就默認的綁定方式。例如C語言有一種方法調用,那就是前期綁定。後期綁定也叫作動態綁定或是運行時綁定,它的含義是在運行時根據對象的類型進行綁定。若是一種語言想實現後期綁定,那就必須具備某種機制,以便在運行時能判斷出對象的類型,從而調用恰當的方法。也就是說,編譯器一直不知道對象的類型,可是方法調用機制可以找到正確的方法體,並加以調用。後期綁定機制隨編程語言的不一樣而不一樣,可是隻要想一下就會知道,無論怎樣都必須在對象中安置某種「類型信息」。編程
Java中除了static方法和final方法(private方法屬於final方法)以外,其餘的方法都是後期綁定。這意味着一般狀況下,咱們沒必要斷定是否應該進行後期綁定,由於他會自動發生。有時候,將某個方法聲明爲final,能夠用來防止他人覆蓋該方法。可是更重要的一點或許是:這樣作能夠有效的關閉「後期綁定」,或者說是告訴編譯器不須要動態綁定。這樣,編譯器就可以爲以final方法調用生成更有效的代碼。然而,大多數狀況下,這樣作對程序的性能不會有什麼改觀。因此,最好根據設計來決定是否使用final,而不是根據試圖提升性能的目的來使用final。編程語言