把不同的子類對象都當(dāng)作父類來看,可以屏蔽不同子類對象之間的差異,寫出通用的代碼,做出通用的編程,以適應(yīng)需求的不斷變化。 賦值之后,父對象就可以根據(jù)當(dāng)前賦值給它的子對象的特性以不同的方式運作。也就是說,父親的行為像兒子,而不是兒子的行為像父親。 舉個例子:從一個基類中派生,響應(yīng)一個虛命令,產(chǎn)生不同的結(jié)果。 比如從某個基類繼承出多個對象,其基類有一個虛方法Tdoit,然后其子類也有這個方法,但行為不同,然后這些子對象中的任何一個可以賦給其基類的對象,這樣其基類的對象就可以執(zhí)行不同的操作了。實際上你是在通過其基類來訪問其子對象的,你要做的就是一個賦值操作。 使用繼承性的結(jié)果就是可以創(chuàng)建一個類的家族,在認(rèn)識這個類的家族時,就是把導(dǎo)出類的對象當(dāng)作基類的對象,這種認(rèn)識又叫作upcasting。這樣認(rèn)識的重要性在于:我們可以只針對基類寫出一段程序,但它可以適應(yīng)于這個類的家族,因為編譯器會自動就找出合適的對象來執(zhí)行操作。這種現(xiàn)象又稱為多態(tài)性。而實現(xiàn)多態(tài)性的手段又叫稱動態(tài)綁定(dynamic binding)。 簡單的說,建立一個父類的對象,它的內(nèi)容可以是這個父類的,也可以是它的子類的,當(dāng)子類擁有和父類同樣的函數(shù),當(dāng)使用這個對象調(diào)用這個函數(shù)的時候,定義這個對象的類(也就是父類)里的同名函數(shù)將被調(diào)用,當(dāng)在父類里的這個函數(shù)前加virtual關(guān)鍵字,那么子類的同名函數(shù)將被調(diào)用。