C#中new和override的区别
生活随笔
收集整理的這篇文章主要介紹了
C#中new和override的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
using System;
//C#中new和override的區別
namespace Text
{//在C#中,override和new都會覆蓋父類中的方法。那它們兩者之前有什么區別呢?//override是指“覆蓋”,是指子類覆蓋了父類的方法。子類的對象無法再訪問父類中的該方法。 //new是指“隱藏”,是指子類隱藏了父類的方法,當然,通過一定的轉換,可以在子類的對象中訪問父類的方法。class Base{public virtual void F1(){Console.WriteLine("Base's virtual function F1");}public virtual void F2(){Console.WriteLine("Base's virtual fucntion F2");}}class Derived : Base{public override void F1(){Console.WriteLine("Derived's override function F1");}public new void F2(){Console.WriteLine("Derived's new function F2");}}class EXE1{public static void Fun(){Base b1 = new Derived();//由于子類覆蓋了父類的方法,因此這里調用的是子類的F1方法。也是OO中多態的體現
b1.F1();//由于在子類中用new隱藏了父類的方法,因此這里是調用了隱藏的父類方法
b1.F2();}}//或者我們用以下的代碼更加容易明白: class EXE2{public static void Fun(){Derived b1 = new Derived();//由于子類覆蓋了父類的方法,因此這里調用的是子類的F1方法。也是OO中多態的體現
((Base)b1).F1();//由于在子類中用new隱藏了父類的方法,因此這里是調用了隱藏的父類方法
((Base)b1).F2();}}//以上兩個的輸出都為: //Derived's override function F1 //Base's virtual fucntion F2 //在上面的例子中,由于F1覆蓋(override)了原先的方法,//因此即使轉成父類的對象,仍舊調用了子類的F1方法。//而由于子類的F2方法只是“隱藏”了父類的F2方法,//因此當強制轉換成父類(Base)的對象去調用F2方法時,//調用了原先隱藏的父類的F2方法。
}
轉載于:https://www.cnblogs.com/Sky-cloudless/archive/2012/07/05/2577472.html
總結
以上是生活随笔為你收集整理的C#中new和override的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 巧妙的查看FORM中的 LOV查询语句
- 下一篇: 网管好帮手之工具篇