虚方法和非虚方法

非虚方法

所有static方法+final/private方法都是非虚方法。
非虚方法通过invokespecial指令调用,同时非虚方法的符号引用将转换为对应的直接引用(直接引用方法),在编译完成时就确定了唯一的调用方法。

虚方法

虚方法通过invokevirtual指令调用,且会有静态分派和动态分派。
先根据编译时期方法接收者和方法参数的静态类型来分派,再在运行时期只根据方法接收者的实际类型来分派。

posted @ 2021-12-07 12:30  Alfie014  阅读(122)  评论(0编辑  收藏  举报