C#中类的override和virtual
歡迎您成為我的讀者,希望這篇文章能給你一些幫助。
前言
昨天和大家一起學(xué)習(xí)類的派生,知道派生類和基類的區(qū)別。
今天咱們一起看看派生類和基類的虛方法和覆寫方法是如何使用的。
我們使用基類引用訪問派生類對象時,得到的是基類的成員。當(dāng)使用虛方法時,可以得到派生類的成員和函數(shù)。
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?"女";}}上面的代碼是一個簡單的基類和派生類的表達(dá),我們嘗試著通過基類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從上面的圖片可以看到通過各自的實(shí)例訪問到的GetInfo()方法返回的值不一樣,基類返回自己的,派生類返回自己的。
那么我們想要使用基類的引用訪問派生類對象時,可以通過虛方法來實(shí)現(xiàn)訪問。
它必須滿足如下條件:
派生類的方法和基類的方法有相同的簽名和返回類型。
基類的方法使用virtual標(biāo)注。
派生類的方法使用override標(biāo)注。
相比較上一個輸出圖片,可以看到當(dāng)使用虛方法和覆寫標(biāo)記時,輸出的都是派生類的成員。
需要注意的是:
覆寫和被覆寫的方法必須有相同的可訪問性。
不能覆寫static方法或非虛方法。
方法、屬性和索引器、成員類型事件都可以被聲明為virtual和override。
寄語
人生短暫,我不想去追求自己看不見的,我只想抓住我能看得見的。
我是阿輝,感謝您的閱讀,如果對你有幫助,麻煩點(diǎn)贊、轉(zhuǎn)發(fā) ?謝謝。
很高興能和您成為朋友。
推薦閱讀
分享給同做程序員的你我他
畢業(yè)四年,我當(dāng)初是如何走上編程這條路的!
物聯(lián)網(wǎng)工程專業(yè)的迷茫與抉擇
總結(jié)
以上是生活随笔為你收集整理的C#中类的override和virtual的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 想说爱你不容易 | 使用最小 WEB A
- 下一篇: c# char unsigned_dll