new 是新创建,override是重载已经有的

看下面例子大家就知道了

A类 有方法 public virtual void test()
B类继承自A类,有方法 public new void test()
如下实例化:
A a = new B();
a.test();

如果你用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();//与上面相同

如果是new呢 对象是父类的就调用父类的方法

是子类的对象就调用子类的方法

如果把子类强制转换成父类

那么对象也调用父类的方法

posted on 2009-02-24 16:33  bestsaler  阅读(138)  评论(0编辑  收藏  举报