[C#]关于override和new在重写方法时的区别
生活随笔
收集整理的這篇文章主要介紹了
[C#]关于override和new在重写方法时的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
規則:
?
例子:
using System; using System.Collections.Generic;namespace ConsoleApp1 {class A { public void Test() { Console.WriteLine("A"); } }class B : A { public virtual void Test() { Console.WriteLine("B"); } }class C : B { public override void Test() { Console.WriteLine("C"); } }class D : C { public new void Test() { Console.WriteLine("D"); } }class Program{static void Main(){D d = new D();C c = d;B b = d;A a = d;d.Test();c.Test();b.Test(); a.Test();}} }最后的輸出結果為:
D C C A(省略回車)
分析:
- 第一個D:沒有派生類,所以沒有重載。
- 第二個C:有派生類,但是使用了new修飾符對基類隱藏了重寫的方法。
- 第三個C:有派生類,并且使用override修飾,這是它尋找到最遠的派生的成員,因此輸出了C。
- 第四個A:A的方法非虛,因此輸出的是A。
?
?
?
?
轉載于:https://www.cnblogs.com/lizhenghao126/p/11053665.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的[C#]关于override和new在重写方法时的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring boot: GlobalD
- 下一篇: U盘加载速度慢的解决方法