new 和 override 的区别(转自Q.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对多态的影响很重要。

posted on 2007-09-23 07:26  kings  阅读(176)  评论(0)    收藏  举报

导航