這篇文章給大家介紹C#中怎么實(shí)現(xiàn)多態(tài)性,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
一:多態(tài)性
多態(tài)是指一個(gè)行為具有多個(gè)不同表現(xiàn)形式的能力,在C#中通過多態(tài)性的檢測(cè)時(shí)機(jī)可以分為靜態(tài)多態(tài)性和動(dòng)態(tài)多態(tài)性靜態(tài)多態(tài)性:函數(shù)重載和運(yùn)算符重載動(dòng)態(tài)多態(tài)性:抽象方法、重寫方法、隱藏方法
二:函數(shù)重載(overlode)
——函數(shù)名必須相同
——函數(shù)參數(shù)類型不同
——函數(shù)參數(shù)個(gè)數(shù)不同
——函數(shù)參數(shù)順序不同
三:抽象(abstract)
——包含抽象函數(shù)的類,類也必須定義為抽象的
——抽象函數(shù)只有定義沒有函數(shù)體,并且必須定義為public
——抽象類中可以包含普通函數(shù)和抽象函數(shù)
——抽象類不能實(shí)例化,不能使用抽象類去構(gòu)造對(duì)象,但是可以使用抽象類去聲明對(duì)象
可以在類前添加sealed關(guān)鍵字,使類變?yōu)槊芊忸悾芊忸愑幸韵绿攸c(diǎn):——不能被繼承,所以密封類中不能定義虛方法和抽象方法,抽象類不能定義為sealed——重寫的方法可以聲明為密封方法,表示該方法不能被子類重寫
四:虛方法(virtual)
抽象方法與虛方法區(qū)別:——抽象函數(shù)不能有函數(shù)體,虛函數(shù)必須有函數(shù)體——當(dāng)繼承了一個(gè)抽象類時(shí),必須去實(shí)現(xiàn)抽象函數(shù),抽象函數(shù)也只能在子類中去實(shí)現(xiàn)。但是虛函數(shù)可以在基類實(shí)現(xiàn)也可以在子類重寫——抽象函數(shù)必須在抽象類中,虛函數(shù)不必須在抽象類中
五:重寫方法(override)與隱藏方法(new)
——隱藏方法的調(diào)用(用什么類型來聲明,在調(diào)用方法的時(shí)候就會(huì)調(diào)用什么類型的方法)——重寫方法的調(diào)用(用什么類型來構(gòu)造,在調(diào)用方法的時(shí)候就會(huì)調(diào)用什么類型的方法)
class Enemy{ public void Move() { Console.WriteLine("Enemy Move"); } public virtual void Attack() { Console.WriteLine("Enemy Attack"); }} class Boss : Enemy{ public override void Attack() { Console.WriteLine("Boss Attack"); } public new void Move() { Console.WriteLine("Boss Move"); }} class MainClass{ static void Main(string[] args) { //=====隱藏方法的調(diào)用(用什么類型來聲明,在調(diào)用方法的時(shí)候就會(huì)調(diào)用什么類型的方法) Boss oneEnemy = new Boss(); oneEnemy.Move(); //調(diào)用的是隱藏方法,用子類的聲明來調(diào)用的,調(diào)用的就是子類的Move Enemy twoEnemy = new Boss(); twoEnemy.Move(); //調(diào)用的隱藏方法,用父類的聲明來調(diào)用的,調(diào)用的就是父類的Move方法 //=====虛方法的調(diào)用(用什么類型來構(gòu)造,在調(diào)用方法的時(shí)候就會(huì)調(diào)用什么類型的方法) Enemy threeEnemy = new Enemy(); threeEnemy.Attac(); //調(diào)用虛方法,用父類來實(shí)例化的,所以調(diào)用的是父類的Attac方法 Enemy fourEnemy = new Boss(); fourEnemy.Attac(); //調(diào)用虛方法,用子類來實(shí)例化的,所以調(diào)用的就是子類(Boss)的Attac方法 }}
關(guān)于C#中怎么實(shí)現(xiàn)多態(tài)性就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
分享題目:C#中怎么實(shí)現(xiàn)多態(tài)性-創(chuàng)新互聯(lián)
文章源于:http://m.2m8n56k.cn/article2/esiic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、微信公眾號(hào)、關(guān)鍵詞優(yōu)化、標(biāo)簽優(yōu)化、微信小程序、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容