接口如何實現(xiàn)多態(tài) 為什么說java中接口是最能體現(xiàn)多態(tài)的概念?
為什么說java中接口是最能體現(xiàn)多態(tài)的概念?多態(tài)性的基本概念應該是一種類型有多種表達形式。在一個程序中,由一個類型定義的同一操作有多個邏輯實現(xiàn)。Java中的接口是一種非常純的類型。它只定義了這種類型可
為什么說java中接口是最能體現(xiàn)多態(tài)的概念?
多態(tài)性的基本概念應該是一種類型有多種表達形式。在一個程序中,由一個類型定義的同一操作有多個邏輯實現(xiàn)。Java中的接口是一種非常純的類型。它只定義了這種類型可以做什么,而不是如何做。只有實現(xiàn)它的特定實現(xiàn)類才能定義如何執(zhí)行(特定邏輯)。這與高度多態(tài)性完全一致。實際上,C語言中的純虛函數(shù)類與java接口非常相似。區(qū)別在于Java有接口的概念。
java是怎么通過方法區(qū)中的方法表來實現(xiàn)多態(tài)和接口的?
是的,這就是多態(tài)性。接口實現(xiàn)的多態(tài)性意味著接口userservice負責定義方法的名稱、參數(shù)列表和返回值,而不管其具體實現(xiàn)如何。調用方userblh不需要知道誰實現(xiàn)了finduser和saveOrUpdate方法。它只需要知道userservice指針指向的對象已經(jīng)實現(xiàn)了這兩個方法,所以調用方userblh只調用它們。似乎您可能不知道如何在實現(xiàn)層(語言編譯技術)中實現(xiàn)它。具體來說,1。方法實際上是一段可執(zhí)行代碼。接口userservice實際上定義了一個數(shù)據(jù)結構(實際上,它是一個虛擬函數(shù)表),但沒有定義方法本身(也就是說,接口沒有定義可執(zhí)行代碼塊)。2接口userservice的子類userserviceinpl需要在構造函數(shù)的表中填充一些內容,這是子類userserviceinpl定義的可執(zhí)行代碼塊的入口地址。三。當調用方userblh調用finduser方法時,它通過查找虛擬函數(shù)表來找到finduser方法的地址并調用它。給出一個圖來幫助從技術角度解釋如何實現(xiàn)多態(tài)性。(假設另一個類B也實現(xiàn)了接口userservice)