java的overload(重载)--在JVM中的实现--->静态分派

本文介绍了Java虚拟机中方法调用的过程,包括方法调用与方法执行的区别、四种方法调用字节码指令及其应用场景,并解释了静态分派与动态分派的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 java 虚拟机中,方法的调用并不等于方法执行,方法调用阶段唯一的任务就是确定被调用的方法的阿布呢不能,不涉及方法内部的棘突执行过程。一切方法调用在class文件里面存储的都只是符号引用,不是方法在实际运行时内存布局中的入口地址。

 

JVM在解析时, 在调用目标程序代码写好、编译器进行编译时就必须确定下来;

 

在java中, 符合“编译期可知,运行期不可变” 这个要求的方法主要有:静态方法(与类型直接关联)和私有方法(外部不可访问),这些方法都不能通过继承或者重写来修改,因此他们在类加载阶段进行解析。

 

与上边对应的 就是在Java虚拟机里边提供了四条方法调用字节码指令:

1.invkestatic:调用静态方法

2.invokespecial:调用实例构造器<init>方法、私有方法和父类方法

3.invokevirtual:调用所有虚方法

4.invokeinterface:调用接口方法

 

”编译期可知,运行期不可变“ 这类方法 只能被 invokestatic 和 invokespecial 指令调用,包含:

静态方法、私有方法、实例构造器、父类方法。

 

解析调用是个静态过程,编译期间就完全确定了。

分派调用测可能是静态也可能是动态的,可以分为单分派和多分派这样就有了:

 

静态单分派

静态多分派

动态单分派

动态多分派

 

 

静态分派:(overload)重载

 

动态分派:(override) 重写

 

 

待续....................

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值