C#之虚方法解读
来源:互联网 发布:江苏影视频道网络直播 编辑:程序博客网 时间:2024/06/05 04:51
C#之虚方法解读
方法声明前带有virtual关键字,那么这个方法就是虚方法,虚方法的实现可以由派生类所取代,这种取代是通过方法的重写实现的
特点:
1.虚方法不允许有static修饰符
2.虚方法不允许有abstract修饰符
3.虚方法不允许有override修饰符
4.虚方法不能是私有的,不能使用private修饰符
一般方法在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的
而虚方法在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象实例来动态判断要调用的函数
eg:Bird a = new Eagle(); 其中Bird是申明类,Eagle是实例类。
1.当a调用一个Eagle类的方法时,系统会直接去检查Eagle类,看所调用的方法是否为虚方法;
2.如果不是虚方法,那么它就直接执行该方法。而如果是一个虚方法,那么这个时候它就不会立刻执行该方法了,而是开始检查Eagle类。
3.在这个Eagle类里,他会检查Eagle类的定义中是否有实现该虚方法或者重新实现该虚方法(通过override关键字)的方法,
如果有,它就不会再找了,而是马上执行该Eagle类中实现虚方法的方法。
4.而如果没有的话,系统就会不停地往上找Eagle类的父类,并对父类重复刚才在Eagle类里的检查,直到找到第一个重载了该虚方法的父类为止,然后执行该父类里重载后的方法。
0 0
- C#之虚方法解读
- WEKA之ThresholdCurve.java方法类解读
- java源码解读之ClassLoader(loadClass方法)
- C#多态实现之虚方法
- C#多态之虚方法
- DotNetNuke 5 C#版本解读之--架构介绍
- c# 泛型中类型参数约束 之 主约束的解读
- C#之扩展方法
- C#之扩展方法
- C#之方法重载
- C# 之 扩展方法
- c#之join方法
- C#之构造方法
- C#之方法
- C#学习之方法
- C#之方法
- c#方法之 实例方法
- Android之bitmap压缩的几种方法的解读
- 菱形虚拟继承和多态的原理
- PAT-B 1009. 说反话 (20)
- MySql之数据类型学习总结
- window 安装curl 工具使用
- 猜算式
- C#之虚方法解读
- 自学Android历程->Android应用的是事件处理机制
- 图的存储表示--邻接矩阵法实现
- 派遣函数
- string、math、random、bigdecimal、date、calender
- 使用LLDB调试程序
- 使用YAML创建一个 Kubernetes Depolyment
- 微信支付流程及注意要点
- linux中简易配置vim编辑器