java接口開(kāi)發(fā)實(shí)例 java是怎么通過(guò)方法區(qū)中的方法表來(lái)實(shí)現(xiàn)多態(tài)和接口的?
java是怎么通過(guò)方法區(qū)中的方法表來(lái)實(shí)現(xiàn)多態(tài)和接口的?是的,這就是多態(tài)性。接口實(shí)現(xiàn)的多態(tài)性意味著接口userservice負(fù)責(zé)定義方法的名稱、參數(shù)列表和返回值,而不管其具體實(shí)現(xiàn)如何。調(diào)用方userbl
java是怎么通過(guò)方法區(qū)中的方法表來(lái)實(shí)現(xiàn)多態(tài)和接口的?
是的,這就是多態(tài)性。接口實(shí)現(xiàn)的多態(tài)性意味著接口userservice負(fù)責(zé)定義方法的名稱、參數(shù)列表和返回值,而不管其具體實(shí)現(xiàn)如何。調(diào)用方userblh不需要知道誰(shuí)實(shí)現(xiàn)了finduser和saveOrUpdate方法。它只需要知道userservice指針指向的對(duì)象已經(jīng)實(shí)現(xiàn)了這兩個(gè)方法,所以調(diào)用方userblh只調(diào)用它們。似乎您可能不知道如何在實(shí)現(xiàn)層(語(yǔ)言編譯技術(shù))中實(shí)現(xiàn)它。具體來(lái)說(shuō),1。方法實(shí)際上是一段可執(zhí)行代碼。接口userservice實(shí)際上定義了一個(gè)數(shù)據(jù)結(jié)構(gòu)(實(shí)際上,它是一個(gè)虛擬函數(shù)表),但沒(méi)有定義方法本身(也就是說(shuō),接口沒(méi)有定義可執(zhí)行代碼塊)。2接口userservice的子類userserviceinpl需要在構(gòu)造函數(shù)的表中填充一些內(nèi)容,這是子類userserviceinpl定義的可執(zhí)行代碼塊的入口地址。三。當(dāng)調(diào)用方userblh調(diào)用finduser方法時(shí),它通過(guò)查找虛擬函數(shù)表來(lái)找到finduser方法的地址并調(diào)用它。給出一個(gè)圖來(lái)幫助從技術(shù)角度解釋如何實(shí)現(xiàn)多態(tài)性。(假設(shè)另一個(gè)類B也實(shí)現(xiàn)了接口userservice)