研究了一下C#中子類重寫父類方法的幾種情況,關(guān)鍵字:virtual、abstract、override、new。 virtual:標(biāo)識(shí)可能但不是必須被子類重寫的方法,父類必須給出默認(rèn)實(shí)現(xiàn),子類可以重寫(使用override,new,或無(wú)特殊標(biāo)識(shí)的普通方法),也可以不重寫該方法。 abstract:標(biāo)識(shí)必須被子類重寫的方法,父類不給出實(shí)現(xiàn),子類必須用override關(guān)鍵字重寫該方法。 override:標(biāo)識(shí)重寫父類的方法,父類方法必須是用abstract,virtual,override之一聲明,運(yùn)行時(shí)將根據(jù)實(shí)例的類型而不是引用的類型調(diào)用對(duì)象的方法。 new:標(biāo)識(shí)重寫父類的方法,父類方法可以用virtual、override、new之一聲明,也可以是沒有特殊標(biāo)識(shí)的普通方法,運(yùn)行時(shí)會(huì)根據(jù)引 用的類型選擇調(diào)用父類還是子類的方法,重寫父類方法時(shí),使用new關(guān)鍵字與使用沒有特殊標(biāo)識(shí)的普通方法是等效的,但是后者會(huì)給出一個(gè)編譯警告。 下面的表格總結(jié)了子類重寫父類方法的各種情況(Class B繼承自Class A,重寫了A的Test()方法):
|
|
來(lái)自: woshishenxian... > 《c#》