国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中重載重寫和覆蓋的定義與區別

2019-10-29 19:58:14
字體:
來源:轉載
供稿:網友

一、重載

  1、重載示意

   重載(Overload)是重新加載的意思,指的是同一個類中同名,但是參數列表不同的方法組(返回值不能區別函數是否重載),重載沒有關鍵字。通俗點說重載是對內存中同一個類中的函數或方法進行重新加載的意思。

  2、發生條件

   必須發生在一個類中,函數名相同,參數類型或者個數不同構成重載,與返回類型無關。

如:

Public class Name {   Public string GetName(string username)   {     Return username;   } Public int GetName(int usercount)   {     Return usercount;   } }

二、重寫

   1、示意

    重寫(Override)指子類修改父類中某個函數的函數體,需要重寫的父類中的函數必須是由virtual、abstract 或override標注的,不能重寫非虛方法或靜態方法。

    Override是在繼承的時候,如果你寫的函數與要繼承的函數函數特征(函數特征包括函數名,參數的類型和個數)相同,那么,加上這個關鍵字,在使用這個子類的這個函數的時候就看不見父類(或超類)的函數了,它被覆蓋掉了。

   2、發生條件

    必須發生在基類和派生類中,基類函數必須用virtual、abstract 或override修飾,派生類用override修飾。

如:

 class Program   {     static void Main(string[] args)     {       oc oa=new ob();       oa.b(1, 2);  //輸出結果為fdfdf     }     public class oc     {       private int a;      //封裝       public int geta       {         get { return a; }       }       public int seta       {         set { a = value; }       }      //函數b       public virtual int b(int c, int e)       {         Console.WriteLine("{0}+{1}={2}", c, e, c + e);         return c + e;       }     }     //派生類ob,基類oc     public class ob : oc     {     //重寫基類中的函數b       public override int b(int c,int e)       {         Console.WriteLine("fdfdf");         return c;       }      } }

三、覆蓋

   1、示意

    覆蓋指重新定義子類中與父類具有相同函數特征的的函數體。子類中有一函數和父類中函數的函數特征相同,但函數體不同,稱為覆蓋。這種覆蓋又稱為隱藏,是隱藏父類中相同的函數,并沒有進行重寫。

   2、發生條件

   在子類中寫一個和基類一樣名字(參數不同也算)的非虛函數,會讓基類中的函數被隱藏,編譯后會提示要求使用New關鍵字。

如:

 class Program   {     static void Main(string[] args)     {       oc oa=new ob();       oa.b(1, 2); //輸出結果為1+2=3     }     public class oc     {       private int a;     //封裝       public int geta       {         get { return a; }       }       public int seta       {         set { a = value; }       }     //函數b       public int b(int c, int e)       {         Console.WriteLine("{0}+{1}={2}", c, e, c + e);         return c + e;       }     }   //派生類ob,基類oc     public class ob : oc     {      //覆蓋,隱藏基類中的函數b       public new int b(int c,int e)       {         Console.WriteLine("fdfdf");         return c;       }      } }

重寫(Override)的兩個函數的函數特征相同,應用在子類和父類中,會重寫父類函數;

重載(Overload)的兩個函數的函數名雖然相同,但函數特征不同,應用在同一類中;

覆蓋(new)兩個函數的函數名一定相同,但函數特征可相同也可不相同,應用在子類和父類中,會隱藏父類同名函數。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 静海县| 台中市| 怀化市| 宁晋县| 青州市| 沾益县| 克什克腾旗| 南开区| 克什克腾旗| 修文县| 正镶白旗| 乌海市| 神木县| 南城县| 临湘市| 大兴区| 昌图县| 金华市| 宜兴市| 四平市| 安阳县| 句容市| 盱眙县| 交口县| 西昌市| 嘉定区| 河源市| 怀集县| 新安县| 临泽县| 鄄城县| 徐闻县| 弥勒县| 广南县| 安岳县| 永州市| 客服| 嘉黎县| 舟山市| 巴中市| 马龙县|