1、方式不一样
2、编绎警告不一样
3、一个来自c++,一个来自java
4、用没什么区别哦

解决方案 »

  1.   

    class A
    {
    public virtual void mm();
    }
    class B : A
    {
    public override void mm();
    }
    class C : A
    {
    public new void mm();
    }class main
    {
    public void m1()
    {
    A aa = new B();
    aa.mm();//调用B.mm()
    A aa = new C();
    ss.mm();//调用C.mm()
    B bb = new B();
    (A)bb.mm();//调用A.mm();
    C cc = new C();
    (A)cc.mm();//调用C.mm();
    }
    }
      

  2.   

    我来说说override 与 new 的区别:
     override 与 new 都是重写基类的方法,但两者还是有区别
    当用override 重写时;用强制父类调用此方法时,是调用子类的方法,
    而用new重写时;用强制父类调用此方法时,是调用父类的方法;public class cls1
    {
     public virtual void fun()
     {
     }
    }public class cls11
    {
     public override void fun()
     {
     }
    }public class cls12
    {
     public new void fun()
     {
     }
    }则
    cls11 c1=new cls11;
    cls12 c2=new cls12;
    ((cls1)c1).fun();//调用cls11.fun()
    ((cls1)c2).fun();//调用cls1.fun()
      

  3.   

    Gao2003(Gao) 你讲的不错,但能不能更明白一些,如:用强制父类调用此方法时,是调用子类的方法。
    好像不完整。
      

  4.   

    一个类可能有好几个父类:
    如果是用new重写,则用那个父类强制,则就调用这个强制父类的方法。
    如果是用override重写,则不管用那个父类强制,都是调用子类(最出声明的类)的方法.
      

  5.   

    我的理解:override 就是 “骑在上面”,骑在父类的头上,所以当调用 cls_father cl = cls_child(); 的时候就用子类的方法。
    new 就是说 “我是新人”,和老家伙不是一回事,就相当于重新起了一个名字一样,大家井水不犯河水。呵呵。