c#里面重写超类方法的new和overriding有什么区别阿?

解决方案 »

  1.   

    在C#是override,没有听过有overriding。
      

  2.   

    这两个修饰符在含义上相互排斥,new 会用同样的名称创建一个新成员并使原始成员变为隐藏的,而 override 则扩展继承成员的实现。
      

  3.   

    超类...lz从java过来的吧...先规范一下术语...
      

  4.   

    偶是object pascal过来的呵呵
      

  5.   

    override父类的抽象方法或虚方法
    new父类的一般方法
      

  6.   

    override父类的抽象方法或虚方法
    new父类的一般方法
    =====
    豁然开朗的感觉
      

  7.   

    如果你用override,则无论调用的是A类还是B类中的TEST(),系统都会找到它实质类的TEST();
    如果是用的New,则可以通过类型转换调用到基类的TEST();下面是override的情况:
    A a = new A();
    B b = new B();
    A a1=new B();
    a.Test();//调用A中Test();
    b.Test();//调用B中Test();
    a1.Test();//调用B中Test();系统会自动识别a1是B的实例
    ((A)b).Test();//与上面相同下面是new的情况:
    A a = new A();
    B b = new B();
    A a1=new B();
    a.Test();//调用A中Test();
    b.Test();//调用B中Test();
    a1.Test();//调用A中Test();
    ((A)b).Test();//与上面相同
      

  8.   

    NEW是指在子类中告知编译器要显示的隐藏基类的相同方法,Override则是重写基类的方法,差别很大。
     如:
      public class BaseClass
    {
      puclic virtual void DoSomething()
      {
         Console.Write("BaseClass Function...");
      }
    }//重写基类方法
    public class DerivedClass
    {
      puclic override void DoSomething()
      {
         Console.Write("DerivedClass Function...");
      }
    }//显示隐藏基类方法
    public class DerivedClass
    {
      new puclic void DoSomething()
      {
         Console.Write("DerivedClass Function...");
      }
    }同样两种写法,运行以下代码的结果明显不一样:
    DerivedClass MyDerivedObj = new DerivedClass();
    BaseClass MyBaseObj = new BaseClass();
    MyBaseObj = MyDerivedObj;
    MyBaseObj.DoSomething();重写(override)的话结果是:DerivedClass Function...;
    隐藏(new)的话结果是:BaseClass Function...;希望此示例对你有所帮助  ^_^