当前位置: 移动技术网 > IT编程>开发语言>c# > C#中new和override的区别个人总结

C#中new和override的区别个人总结

2019年07月18日  | 移动技术网IT编程  | 我要评论

问题:

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网