天天看點

前期綁定和後期綁定的差別綁定

        在java多态調用中,對于需要傳入一個類的方法,我們可以傳入該類的子類,進而調用子類的重寫後的方法。之是以編譯器可以确定調用哪個對象的方法,主要跟前期綁定和後期綁定有關。

綁定

        将一個方法調用同一個方法主題關聯起來稱作綁定

前期綁定

        程式執行前進行綁定(也就是說在編譯過程中就已經知道這個方法到底是哪個類中的方法)。編譯程式時,在出現函數調用的時候,會産生一個對具體函數名字的引用,這樣在程式運作的時候,執行到函數調用的語句,就會發現這裡一個對XXX方法的引用,就會把執行邏輯解析到這個XXX方法的絕對位址上,例如final(final會關閉後期綁定),static,private,構造方法,成員變量(包括靜态及非靜态)都是屬于前期綁定,C方法調用都是前期綁定

後期綁定(動态綁定或運作時綁定)

        程式在運作前虛拟機并不知道類的類型,運作時根據對象的類型進行綁定。後期綁定主要通過對象中安置某種“配置資訊”,然後利用這一段資訊,虛拟機可以計算出該對象的方法位址,然後去調用,實作了類型的識别和方法的調用。

動态綁定的過程:

  1. 虛拟機提取對象的實際類型的方法表;
  2. 虛拟機搜尋方法簽名;
  3. 調用方法。

        除了前期綁定的,其他都是後期綁定。

參考文章:

  1.   前期綁定 和 後期綁定
  2.   Java前期(靜态)綁定和後期(動态)綁定
  3.   Java程式設計思想

繼續閱讀