Java中对象调用方法的顺序
2021/6/29 1:20:29
本文主要是介绍Java中对象调用方法的顺序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java虚拟机会预先为加载到内存中的每个类维护一个方法表(Method Table),其中列出了所有类中所有方法的签名。
现在有2个类A和B,其中,B是A的子类,和一个B类型的对象x,当调用x.f(args)时:
1.获取候选方法
首先,编译器会查看对象的类型和被调用的方法名。编译器会在在B类及其超类A的方法表中,找到所有名字为f的方法。
现在,编译知道了所有可能被调用的候选方法
2.重载解析
编译器根据方法调用中提供的参数数量与类型,从候选方法中查找与其匹配的方法,这个过程称为“重载解析”。
这里的匹配包含完全匹配与类型兼容2种含义,也就是说,如果实际参数的类型是方法参数的子类(或实现了的接口类型),或者是可以进行自动类型转换的基础类型,这里也可以称为匹配。
如果没有找到与实参匹配的方法,编译器就会报错。
现在,编译器已经找到了需要调用的方法的方法签名。
3.判断方法是静态绑定还是动态绑定
如果方法是private,static,final修饰的,或者是构造器方法,那么就是静态绑定的。
否则就需要依赖于隐式参数的实际类型,在运行时使用动态绑定。
如果是静态绑定的方法,就可以直接确定要执行的方法了;否则,进行下一步。
4.确定动态绑定要执行的方法
对于动态绑定的方法,优先调用当前类中匹配到的方法;如果当前类中没有满足方法签名的方法,就在超类中进行查找,以此类推。
这篇关于Java中对象调用方法的顺序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南