Java學習 (多型與虛方法)

2021-09-11 02:53:38 字數 705 閱讀 2303

多型

多型是指乙個程式中相同的名字代表不同的含義的情況

兩種不同的多型

(1)編譯時多型(overload過載)

多個同名的方法,但是方法的引數不同

p.

sayhello()

;p.sayhello

("hello world"

);

(2)執行時多型

覆蓋(override)

子類對父類方法進行覆蓋

虛方法呼叫(動態繫結)

呼叫時,程式會正確的呼叫子類物件的方法

public

class

testvirtualinvoke

static

void

dostuff

(shape s)

}class

shape

}class

********

extends

shape

}class

circle

extends

shape

}

所有的非final方法會自動地進行動態繫結1

static的方法,以宣告的型別為準,與例項方法無關

2private方法子類看不見,也不會被虛化

3final方法子類不能覆蓋,不存在虛化問題

C 多型與虛方法

自 同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。換句話說,實際上就是同乙個型別的例項呼叫 相同 的方法,產生的結果是不同的。這裡的 相同 打上雙引號是因為這裡的相同的方法僅僅是看上去相同的方法,實際上它們呼叫的方法是不同的。多型是基於物件繼承和黎克特制轉換的,那麼什...

虛函式與多型學習總結

1.多型性 指乙個名字,多種語義 或介面相同,多種實現。過載函式是多型性的一種簡單形式。虛函式允許函式呼叫與函式體的聯絡在執行時才進行,稱為動態聯編。2.虛函式 冠以關鍵字 virtual 的成員函式稱為虛函式。基類指標 實現執行時多型的關鍵首先是要說明虛函式,另外,必須用呼叫派生類的不同實現版本。...

虛方法實現多型

大家都知道物件導向的三大特徵,封裝 繼承 多型,這裡解釋一下多型 同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。換句話說,實際上就是同乙個型別的例項呼叫 相同 的方法,產生的結果是不同的。這裡的 相同 打上雙引號是因為這裡的相同的方法僅僅是看上去相同的方法,實際上它們...