java是怎么通過方法區中的方法表來實現多態和接口的?
沒錯,這就是多態。接口實現的多態,意味著接口UserService負責定義方法的名字,形參列表和返回值,而不考慮其具體實現,調用方UserBlh也不必了解findUser,saveOrUpdate這兩方法由誰來實現,只需知道這userService指針指向的對象已經實現了這兩個方法,那么調用方UserBlh只管調用就好。 “調用的是接口UserService中對應的方法,還是調用的是接口的實現UserServiceImpl中對應的方法”看來你可能不太清楚在實現層(語言編譯的技術)上如何做的。 具體來說,1.方法實際上就是一段可執行的代碼。而接口UserService其實就是定義了一個數據結構(其實就是虛函數表),而不定義方法本身(就是接口沒有定義可執行的代碼塊) 2.接口UserService的子類UserServiceImpl在構造函數里要往這個表填一些東西,這個東西就是子類UserServiceImpl所定義的可執行代碼塊的入口地址。 3.當調用方UserBlh調用findUser方法,則通過查虛函數表的方式找到那個findUser方法的地址,進行調用。 給張圖幫助說明從技術的角度如何實現多態。(假設還有一個類B也實現了接口UserService)