C#中类的override和virtual
歡迎您成為我的讀者,希望這篇文章能給你一些幫助。
前言
昨天和大家一起學習類的派生,知道派生類和基類的區別。
今天咱們一起看看派生類和基類的虛方法和覆寫方法是如何使用的。
我們使用基類引用訪問派生類對象時,得到的是基類的成員。當使用虛方法時,可以得到派生類的成員和函數。
class?Ahui:InfoBase{public?string?Name?=?"阿姨";public?string?GetInfo()?{return?this.Name+""+this.Age;}class?InfoBase?{public?int?Age=27;public?string?Name?=?"ahui"?public?string?GetInfo()?{return?Name;public?string?Love()?{return?"女";}}上面的代碼是一個簡單的基類和派生類的表達,我們嘗試著通過基類InfoBase的引用來訪問派生類Ahui里面的方法看各自輸出上面。
static?void?Main(string[]?args){Ahui?hui?=?new?Ahui();InfoBase?info?=?(InfoBase)hConsole.WriteLine(hui.GetInfo());Console.WriteLine(info.GetInfo());Console.ReadKey();}輸出1從上面的圖片可以看到通過各自的實例訪問到的GetInfo()方法返回的值不一樣,基類返回自己的,派生類返回自己的。
那么我們想要使用基類的引用訪問派生類對象時,可以通過虛方法來實現訪問。
它必須滿足如下條件:
派生類的方法和基類的方法有相同的簽名和返回類型。
基類的方法使用virtual標注。
派生類的方法使用override標注。
相比較上一個輸出圖片,可以看到當使用虛方法和覆寫標記時,輸出的都是派生類的成員。
需要注意的是:
覆寫和被覆寫的方法必須有相同的可訪問性。
不能覆寫static方法或非虛方法。
方法、屬性和索引器、成員類型事件都可以被聲明為virtual和override。
寄語
人生短暫,我不想去追求自己看不見的,我只想抓住我能看得見的。
我是阿輝,感謝您的閱讀,如果對你有幫助,麻煩點贊、轉發 ?謝謝。
很高興能和您成為朋友。
推薦閱讀
分享給同做程序員的你我他
畢業四年,我當初是如何走上編程這條路的!
物聯網工程專業的迷茫與抉擇
總結
以上是生活随笔為你收集整理的C#中类的override和virtual的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 想说爱你不容易 | 使用最小 WEB A
- 下一篇: 使用C# 探索 ML.NET 中的不同机