您好,登錄后才能下訂單哦!
C#中的多態(tài)性概念具體是什么,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
相信大家都對(duì)面向?qū)ο蟮娜齻€(gè)特征封裝、繼承、多態(tài)很熟悉,每個(gè)人都能說(shuō)上一兩句,但是大多數(shù)都僅僅是知道這些是什么,不知道CLR內(nèi)部是如何實(shí)現(xiàn)的,所以本篇文章主要說(shuō)說(shuō)多態(tài)性中的一些概念已經(jīng)內(nèi)部實(shí)現(xiàn)的機(jī)理。
首先解釋下什么叫多態(tài):同一操作作用于不同的對(duì)象,可以有不同的解釋?zhuān)a(chǎn)生不同的執(zhí)行結(jié)果,這就是多態(tài)性。換句話說(shuō),實(shí)際上就是同一個(gè)類(lèi)型的實(shí)例調(diào)用"相同"的方法,產(chǎn)生的結(jié)果是不同的。這里的"相同"打上雙引號(hào)是因?yàn)檫@里的相同的方法僅僅是看上去相同的方法,實(shí)際上它們調(diào)用的方法是不同的。
說(shuō)到多態(tài),我們不能免俗的提到下面幾個(gè)概念:重載、重寫(xiě)、虛方法、抽象方法以及隱藏方法。下面就來(lái)一一介紹他們的概念。
1、重載(overload):在同一個(gè)作用域(一般指一個(gè)類(lèi))的兩個(gè)或多個(gè)方法函數(shù)名相同,參數(shù)列表不同的方法叫做重載,它們有三個(gè)特點(diǎn)(俗稱(chēng)兩必須一可以):
方法名必須相同
參數(shù)列表必須不相同
返回值類(lèi)型可以不相同
例如:
publicvoidSleep()
{
Console.WriteLine("Animal睡覺(jué)");
}
publicintSleep(inttime)
{
Console.WriteLine("Animal{0}點(diǎn)睡覺(jué)",time);
returntime;
}
2、重寫(xiě)(override):子類(lèi)中為滿足自己的需要來(lái)重復(fù)定義某個(gè)方法的不同實(shí)現(xiàn),需要用override關(guān)鍵字,被重寫(xiě)的方法必須是虛方法,用的是virtual關(guān)鍵字。它的特點(diǎn)是(三個(gè)相同):
相同的方法名
相同的參數(shù)列表
相同的返回值
3、虛方法:即為基類(lèi)中定義的允許在派生類(lèi)中重寫(xiě)的方法,使用virtual關(guān)鍵字定義。如:
publicvirtualvoidEatFood()
{
Console.WriteLine("Animal吃東西");
}
注意:虛方法也可以被直接調(diào)用。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。