比較C# new和override
作者:佚名 
  這里介紹C# new和override,override是指“覆蓋”,是指子類覆蓋了父類的方法,new是指“隱藏”,是指子類隱藏了父類的方法。
 C# new和override都會覆蓋父類中的方法。那它們兩者之前有什么區(qū)別呢?
override是指“覆蓋”,是指子類覆蓋了父類的方法。子類的對象無法再訪問父類中的該方法。new是指“隱藏”,是指子類隱藏了父類的方法,當然,通過一定的轉(zhuǎn)換,可以在子類的對象中訪問父類的方法。所以說C# new和override的區(qū)別是覆蓋和隱藏
以下是代碼:
- <PRE class=csharp name="code">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 Program
 - {
 - public static void Main(string[] args)
 - {
 - Base b1 = new Derived();
 - //由于子類覆蓋了父類的方法,因此這里調(diào)用的是子類的F1方法。也是OO中多態(tài)的體現(xiàn)
 - b1.F1();
 - //由于在子類中用new隱藏了父類的方法,因此這里是調(diào)用了隱藏的父類方法
 - b1.F2();
 - }
 - }
 
以上介紹C# new和override的區(qū)別是覆蓋和隱藏。
【編輯推薦】
責任編輯:佚名 
                    來源:
                    博客園
 














 
 
 

 
 
 
 