您好,登錄后才能下訂單哦!
這篇文章給大家介紹C#中怎么實現多態性,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
一:多態性
多態是指一個行為具有多個不同表現形式的能力,在C#中通過多態性的檢測時機可以分為靜態多態性和動態多態性靜態多態性:函數重載和運算符重載動態多態性:抽象方法、重寫方法、隱藏方法
二:函數重載(overlode)
——函數名必須相同
——函數參數類型不同
——函數參數個數不同
——函數參數順序不同
三:抽象(abstract)
——包含抽象函數的類,類也必須定義為抽象的
——抽象函數只有定義沒有函數體,并且必須定義為public
——抽象類中可以包含普通函數和抽象函數
——抽象類不能實例化,不能使用抽象類去構造對象,但是可以使用抽象類去聲明對象
可以在類前添加sealed關鍵字,使類變為密封類,密封類有以下特點:——不能被繼承,所以密封類中不能定義虛方法和抽象方法,抽象類不能定義為sealed——重寫的方法可以聲明為密封方法,表示該方法不能被子類重寫
四:虛方法(virtual)
抽象方法與虛方法區別:——抽象函數不能有函數體,虛函數必須有函數體——當繼承了一個抽象類時,必須去實現抽象函數,抽象函數也只能在子類中去實現。但是虛函數可以在基類實現也可以在子類重寫——抽象函數必須在抽象類中,虛函數不必須在抽象類中
五:重寫方法(override)與隱藏方法(new)
——隱藏方法的調用(用什么類型來聲明,在調用方法的時候就會調用什么類型的方法)——重寫方法的調用(用什么類型來構造,在調用方法的時候就會調用什么類型的方法)
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) { //=====隱藏方法的調用(用什么類型來聲明,在調用方法的時候就會調用什么類型的方法) Boss oneEnemy = new Boss(); oneEnemy.Move(); //調用的是隱藏方法,用子類的聲明來調用的,調用的就是子類的Move Enemy twoEnemy = new Boss(); twoEnemy.Move(); //調用的隱藏方法,用父類的聲明來調用的,調用的就是父類的Move方法 //=====虛方法的調用(用什么類型來構造,在調用方法的時候就會調用什么類型的方法) Enemy threeEnemy = new Enemy(); threeEnemy.Attac(); //調用虛方法,用父類來實例化的,所以調用的是父類的Attac方法 Enemy fourEnemy = new Boss(); fourEnemy.Attac(); //調用虛方法,用子類來實例化的,所以調用的就是子類(Boss)的Attac方法 }}
關于C#中怎么實現多態性就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。