A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 仓耳 初级黑马   /  2019-6-5 21:46  /  657 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于方法调用,Java提供了5个字节码指令。

invokestatic:调用类方法(编译阶段确定方法调用版本)。
invokespecial:调用构造器方法、私有方法及父类方法(编译阶段确定方法调用版本)。
invokevirtual:调用实例方法(虚方法)。
invokeinterface:调用接口方法,在运行再确定一个实现此接口的对象。
invokedynamic:由用户引导方法决定。
invokestatic和invokespecial指令在类加载时,就能把符号引用(即逻辑地址,与虚拟机内存无关)解析为直接引用,符合这个条件的有静态方法、实例构造器方法、私有方法、父类方法这4类,叫非虚方法。

非虚方法除了上面静态方法、实例构造器方法、私有方法、父类方法这4种方法之外,还包括final方法。虽然final方法使用invokevirtual指令来调用,但是final方法无法被覆盖,没有其他版本,无需对方法接收者进行多态选择,或者说多态选择的结果是唯一的。
---------------------
作者:Java小萧
来源:CSDN
原文:https://blog.csdn.net/qq_43202482/article/details/88350809
版权声明:本文为博主原创文章,转载请附上博文链接!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马