new 和 override 的区别

new是继承类对基类方法的重写而在继承类中产生新的方法,这时基类方法和继承方法之间没有任何的关系了,可是override就不同了,它也是对基类中方法的重写,但此时只是继承类重写了一次基类的方法。

new 和 override 的区别

[ 2005-06-25 19:27:41 | 作者: yuhen ]
字号: | |
帮某个兄弟修改一个错误时,再次发现这个错误,于是写了个小例子,让初学者注意。呵呵。
  class A
  {
    public virtual void Test()
    {
      Console.WriteLine("A");
    }
  }
 
  class A1 : A
  {
    public override void Test()
    {
      Console.WriteLine("A1");
    }
  }
 
  class A2 : A
  {
    public new void Test()
    {
      Console.WriteLine("A2");
    }
  }
 
  class Test
  {
    static void Main(string[] args)
    {
      A a1 = new A1();
      A a2 = new A2();
 
      a1.Test();
      a2.Test();
      (a2 as A2).Test();
 
      Console.Read();
    }
  }

输出结果是:

A1...
A...
A2...

是不是和想的不一样,总之理解new和override对多态的影响很重要。
原文地址:https://www.cnblogs.com/winner/p/640139.html