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呢 对象是父类的就调用父类的方法
是子类的对象就调用子类的方法
如果把子类强制转换成父类
那么对象也调用父类的方法