C#中new和override的区别个人总结
程序员文章站
2024-01-21 09:36:04
问题:
a类 有方法 public virtual void test()
b类继承自a类,有方法 public new void test()
如下...
问题:
a类 有方法 public virtual void test()
b类继承自a类,有方法 public new void test()
如下实例化:
a a = new b(); a.test();
会调用哪个类中的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();//与上面相同