c#中,类的重写中,new和override的区别
来源:互联网 发布:淘宝店图片轮播素材 编辑:程序博客网 时间:2024/06/15 00:09
在c#中有两种方法可以重写类的成员函数,分别是**new**和**override**,看书时书上并没有说明两者的区别,经过网上查资料后,总结如下:
如果使用的是override,则调用的是它实际类的函数,而用的是new的话,调用的是可以被转换为其引用类的函数
参考网址点击这里
A类 有方法 public virtual void test() B类继承自A类,有方法 public new void test() 如下实例化:A a = new B(); a.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();//与上面相同
深究其原因,为何两者不同,是因为原理不同。
override是覆盖,即将基类的方法直接抹去重新写,而new只是将基类方法隐藏起来,故而仍旧可以调用基类方法,当然也可用base直接访问,但事实上即便用override的话,也能在用base直接访问基类的方法,因为抹去,只是在派生类里面抹去了,并没有改变其对基类方法的访问权限。
0 0
- c#中,类的重写中,new和override的区别
- c#中隐藏(new)和方法重写(override)和重写(overload)的区别
- c#中new和override的区别
- c#中,new 和 override 的区别
- C#中new和override的区别
- c#中new和override的区别
- C#中new和override的区别
- C#中override重写与new隐藏的区别,以及C#与Java的Override区别
- C#中override重写与new隐藏的区别,以及C#与Java的override区别
- C#中override重写与new隐藏的区别,以及C#与Java的Override区别
- C#中隐藏(new)和方法重写(override)和重载(overload)的区别
- C#中重写(override)和覆盖(new)的区别
- C#中重写(override)和覆盖(new)的区别
- C#中重写(override)和覆盖(new)的区别
- C#中重写(override)和覆盖(new)的区别
- C#中重写(override)和覆盖(new)的区别
- C#中override重写与new隐藏的区别,以及C#与Java的Override区别[转载]
- C# 中new,override的区别
- 关联式容器映射map练习
- 四、servlet 分页加载技术
- SPOJ - Horace and his primes(素数+二分查找)
- Error: Error parsing D:\new_android\Android SDK\system-images\android-25\android-wear\armeabi-v7a\de
- C++文件练习
- c#中,类的重写中,new和override的区别
- GIS就业参考系列之方向篇——条条大道通罗马
- ffmpeg 不能发送60帧视频问题分析
- 项目实践---字典
- 在使用hibernate进行数据操作时出现错误
- 深度学习初步了解
- 备忘录模式(设计模式_20)
- C#中Linq查询基本操作使用实例
- 简单Queue实现 python语言