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

首頁 > 編程 > C# > 正文

C#中重載與重寫區(qū)別分析

2020-01-24 01:16:36
字體:
供稿:網(wǎng)友

一、前言
       接觸面向?qū)ο蟮乃枷胍呀?jīng)有一段時光了,為什么要學習面向?qū)ο竽兀恳驗槊嫦驅(qū)ο缶哂锌蓮陀眯浴⒖删S護性、可擴展性等優(yōu)點。
        本人之前一直接觸的是VB語言,所以正式接觸面向?qū)ο蟮木幊陶Z言還要從C#開始。前段時間,剛學完C#,其中重載、重寫傻傻分不清楚。如今通過查閱資料對這兩者有了一個大概的理解,不足之處還請多多指教。
二、定義
        重載:在同一定義域內(nèi)(比如一個類里面)。方法名相同,參數(shù)個數(shù)、次序、類型不同。因此重載對返回值沒有要求,可以相同,也可以不同。但是如果方法名相同,參數(shù)個數(shù)、次序、類型都相同,而返回值不同,則無法構成重載。
       重寫:繼承時發(fā)生,在子類中重寫定義父類中的方法,子類中的方法和父類中的方法是一樣的。即方法名、參數(shù)的個數(shù)、次序、類型和返回值都相同。例如父類方法聲明為virtual(虛方法),子類中使用override申明此方法的重寫。
三、示例
1、重載:
       我們建立一個貓類,在這個類中構造兩個方法。一個是帶參數(shù)姓名的方法,另一個是不帶參數(shù)姓名的方法。這樣當我們初始化一個“貓”的對象時,就可以選擇給對象起名或者不起名。從而達到擴展的目的。

2、 重寫:
       比如動物都有“叫”的方法。貓和狗是它的子類,貓的叫聲是“喵”,狗的叫聲是“汪”,如何在子類中重寫父類的方法呢?首先在動物類中構造一個虛方法。

Class Animal {    public virtual string Shout()//注意修飾符中增加了一個virtual,它表示此方法是虛方法,可以被子類重寫    {    return "";    } } 

         在構建貓這個類時,我們重寫“叫”這個方法

Class cat:Animail {   Public override string Shout()   {//關鍵字override,表示方法重寫   string result="喵";   return result;   } } 

        在構建狗這個類時,我們也重寫“叫”這個方法

Class Dog:Animal {   public override string Shout()   {    string result="汪";    return result;    }    } 

           重寫發(fā)生在父類和子類之間,聲明的是父類,實例化的是子類。本例子實現(xiàn)了多態(tài)。
四、小結(jié)

         重載必須發(fā)生在一個類中,方法名相同,參數(shù)不同。值得注意的是,方法重載必須通過參數(shù)不同來判斷調(diào)用哪個方法,而不能通過返回值。
         重寫override一般用于接口實現(xiàn)和繼承類的方法改寫。值得注意的是,被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,并沒有進行覆蓋。

以上就是本文的全部內(nèi)容,希望大家對C#中重載與重寫的異同有所了解,謝謝大家的閱讀。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 福清市| 宾阳县| 新密市| 济源市| 合作市| 武宁县| 格尔木市| 玉林市| 铜川市| 海林市| 安溪县| 新龙县| 九江市| 华池县| 湘西| 柳林县| 永靖县| 吴忠市| 卓尼县| 通海县| 荔浦县| 黑龙江省| 宁晋县| 共和县| 肥城市| 华池县| 唐山市| 慈溪市| 亚东县| 岑溪市| 东安县| 汉源县| 延长县| 育儿| 滁州市| 句容市| 巴林右旗| 句容市| 耒阳市| 交城县| 萍乡市|