C#中的多態(tài)性概念具體是什么,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
為新津縣等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及新津縣網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站建設(shè)、新津縣網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
相信大家都對(duì)面向?qū)ο蟮娜齻€(gè)特征封裝、繼承、多態(tài)很熟悉,每個(gè)人都能說上一兩句,但是大多數(shù)都僅僅是知道這些是什么,不知道CLR內(nèi)部是如何實(shí)現(xiàn)的,所以本篇文章主要說說多態(tài)性中的一些概念已經(jīng)內(nèi)部實(shí)現(xiàn)的機(jī)理。
首先解釋下什么叫多態(tài):同一操作作用于不同的對(duì)象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果,這就是多態(tài)性。換句話說,實(shí)際上就是同一個(gè)類型的實(shí)例調(diào)用"相同"的方法,產(chǎn)生的結(jié)果是不同的。這里的"相同"打上雙引號(hào)是因?yàn)檫@里的相同的方法僅僅是看上去相同的方法,實(shí)際上它們調(diào)用的方法是不同的。
說到多態(tài),我們不能免俗的提到下面幾個(gè)概念:重載、重寫、虛方法、抽象方法以及隱藏方法。下面就來一一介紹他們的概念。
1、重載(overload):在同一個(gè)作用域(一般指一個(gè)類)的兩個(gè)或多個(gè)方法函數(shù)名相同,參數(shù)列表不同的方法叫做重載,它們有三個(gè)特點(diǎn)(俗稱兩必須一可以):
方法名必須相同
參數(shù)列表必須不相同
返回值類型可以不相同
例如:
publicvoidSleep()
{
Console.WriteLine("Animal睡覺");
}
publicintSleep(inttime)
{
Console.WriteLine("Animal{0}點(diǎn)睡覺",time);
returntime;
}
2、重寫(override):子類中為滿足自己的需要來重復(fù)定義某個(gè)方法的不同實(shí)現(xiàn),需要用override關(guān)鍵字,被重寫的方法必須是虛方法,用的是virtual關(guān)鍵字。它的特點(diǎn)是(三個(gè)相同):
相同的方法名
相同的參數(shù)列表
相同的返回值
3、虛方法:即為基類中定義的允許在派生類中重寫的方法,使用virtual關(guān)鍵字定義。如:
publicvirtualvoidEatFood()
{
Console.WriteLine("Animal吃東西");
}
注意:虛方法也可以被直接調(diào)用。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。