日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

virtual、override-蝌蚪和青蛙-C#多态

發布時間:2023/12/10 C# 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 virtual、override-蝌蚪和青蛙-C#多态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 多態的概念
  • 多態的實現
  • 方法重載、重寫、隱藏
    • 重載
    • 重寫
    • 隱藏

  • 博主寫作不容易,孩子需要您鼓勵
  • 萬水千山總是情 , 先點個贊行不行

多態的概念

什么是多態?
多態一次最早用于生物學,指同一種族的生物具有不同的特性。比如青蛙小時候是蝌蚪,長大了是青蛙,同是一種生物但是有不同的表現形式。
在C#中多態的定義是:同一操作作用于不同類的對象,不同的類的對象進行不同的執行,最后產生不同的執行結果。如所有的動物都有吃東西這一功能,但是羊吃草,獅子吃肉,每種動物都有自己的吃食方式。
重載是多態的一種。

多態的實現

C#中支持基于接口的多態和基于繼承的多態,基于繼承的多態設計在基類中定義方法,并在派生類中重寫方法。多態和重寫是緊密聯系的,重寫是實現多態的重要手段。重寫基類方法就是修改它的實現,或者說在派生類中對繼承的基類方法重新編寫。在基類中用virtual關鍵字聲明的方法在派生類中可以重寫。

  • 虛函數定義語法格式如下:
  • <訪問修飾符> virtual 返回類型 方法名(){//方法主體}

    在派生類中使用override關鍵字來聲明重寫,以實現對基類中的虛擬方法修改或重新編寫。如在上一篇文章中基類Person類中聲明一個display方法,用于顯示姓名、年齡和性別等信息。

    public void DisPlay() //基類共用方法,顯示人的信息{Console.WriteLine("{0}是{1}性,年齡為{2}歲",this._name,this._gender,this._age);}

    person的派生類student和teacher調用display時都會顯示姓名、性別、年齡信息,要想使顯示學生的信息和顯示老師的信息不一樣,就需要使用virtual關鍵字把基類中的display方法定義成虛函數,使用override關鍵字在派生類重寫display方法。
    代碼如下:

    public virtual void DisPlay() //基類定義虛函數方法,顯示人的信息{Console.WriteLine("{0}是{1}性,年齡為{2}歲",this._name,this._gender,this._age);}

    在派生類student中重寫基類的虛函數,使用override關鍵字,代碼如下:

    public override void DisPlay() //重寫基類虛函數{Console.WriteLine("這是學生");base.DisPlay();}

    在派生類teacher中重寫基類的虛函數,使用override關鍵字,代碼如下:

    public override void DisPlay() //重寫基類虛函數{Console.WriteLine("這是老師");base.DisPlay();}

    重寫時,子類重寫方法的訪問級別和父類虛擬方法的訪問級別必須相同。如上代碼,父類方法是public,子類也必須是public。

    方法重載、重寫、隱藏

    重載

    重載是在同一個作用域內發生,定義一系列同名方法,但是方法的參數列表不同,就是簽名不同,簽名由方法名和參數組成。能通過傳遞不同的參數來決定到底調用哪一個同名方法。注意返回值類型不同不能構成重載,因為簽名不包括返回值。

    重寫

    基類方法中使用virtual關鍵字聲明方法和派生類中使用override關鍵字聲明的方法名稱相同,參數列表也相同,就是基類的方法和派生類方法相同,實現了派生類重寫基類中的同名方法。

    隱藏

    基類中的方法不聲明為virtual,在派生類中聲明與基類重名時,需要使用new關鍵字,以隱藏基類同名方法。
    如在person類中聲明兩個display方法用于顯示person的信息演示重載,在其派生類中實現display重寫和隱藏的代碼如下:

    public virtual void DisPlay() //基類定義虛函數方法,顯示人的信息{Console.WriteLine("{0}是{1}性,年齡為{2}歲",this._name,this._gender,this._age);} public virtual void DisPlay(string id) //同名方法實現重載{this.DisPlay();Console.WriteLine("身份證號是:{0},id);}

    在派生類student類中聲明如下方法使用隱藏:

    public override void DisPlay() //重寫基類虛函數{Console.WriteLine("這是學生");base.DisPlay();} public new void DisPlay(string no) //使用new隱藏基類{Console.WriteLine("這是學生");base.DisPlay();Console.WriteLine("學生學號是:{0},no);} ------------------------------------------------------------------------------------------分割線 ------------------------------------------------------------------------------------------
    • 博主簡介:
    • 工業自動化上位機軟件工程師、機器視覺算法工程師、運動控制算法工程師。目前從業于智能制造自動化行業。 博主郵箱:2296776525@qq.com
    • 幫忙點個贊吧。哈哈。

總結

以上是生活随笔為你收集整理的virtual、override-蝌蚪和青蛙-C#多态的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。