方法调用
方法调用并不等同于方法中的代码被执行,方法调用阶段唯一的任务就是确定被
调用方法的版本(即调用哪个方法),暂时还未涉及方法内部的具体运行过程。
Class
文件的编译过程中不包含传统程序语言编译的连接步骤,一切方法调用
在Class
文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局
中的入口地址(也就是直接引用)。
这个特性给Java
带来了更强大的动态扩展能力,但也使得Java
方法调用过程
变得相对复杂,某些调用需要在类加载期间,甚至到运行期间才能确定目标
方法的直接引用。
方法调用的方式
- 解析调用(
Resolution
) - 分派调用(
Dispatch
)