1. 程式人生 > >java學習之路--繼承(多態的動態綁定)

java學習之路--繼承(多態的動態綁定)

程序 有一個 完全 報錯 參數類型 其中 完全匹配 一個 執行過程

動態綁定過程中,對象調用對象方的執行過程

  1:編譯器查看對象的聲明類型和方法名。有可能有多個方法名相同,但參數類型不一樣的重載方法。

  2:編譯器查看調用方法時提供的參數類型。該過程叫重載解析,在相同的方法名中有一個參數類型完全匹配的的方法,就選這個合適的方法。如果沒有找到一個參數類型匹配的方法,或者轉換類型後也沒有匹配的方法,也會報錯。

  3:如果是private或者static或者final方法或者構造器,那麽編譯器就能準確的知道應該調用哪個方法,這種調用方式叫做靜態綁定。與此對應的是,調用的方法依賴隱式參數的實際類型,並且在運行時實現動態綁定。

  4:程序運行時,並且采用動態綁定調用方法時,虛擬機一定調用與x所引用對象的實際類型最合適的那個類的方法,每次調用方法時都要進行搜索,時間開銷很大。虛擬機預先為每個類創建一個方法表,其中列出了所有方法的簽名和實際調用的方法,真正調用的時候就直接查一個方法表就可以。

java學習之路--繼承(多態的動態綁定)