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呢 对象是父类的就调用父类的方法

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

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

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

相关文章:

  • 2021-06-11
  • 2022-12-23
  • 2022-12-23
  • 2021-07-31
  • 2022-02-13
  • 2022-12-23
  • 2022-12-23
  • 2018-06-23
猜你喜欢
  • 2021-12-14
  • 2022-12-23
相关资源
相似解决方案