多型
多型是指乙個程式中相同的名字代表不同的含義的情況
兩種不同的多型
(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 的成員函式稱為虛函式。基類指標 實現執行時多型的關鍵首先是要說明虛函式,另外,必須用呼叫派生類的不同實現版本。...
虛方法實現多型
大家都知道物件導向的三大特徵,封裝 繼承 多型,這裡解釋一下多型 同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。換句話說,實際上就是同乙個型別的例項呼叫 相同 的方法,產生的結果是不同的。這裡的 相同 打上雙引號是因為這裡的相同的方法僅僅是看上去相同的方法,實際上它們...