所有static方法+final/private方法都是非虚方法。 非虚方法通过invokespecial指令调用,同时非虚方法的符号引用将转换为对应的直接引用(直接引用方法),在编译完成时就确定了唯一的调用方法。
虚方法通过invokevirtual指令调用,且会有静态分派和动态分派。 先根据编译时期方法接收者和方法参数的静态类型来分派,再在运行时期只根据方法接收者的实际类型来分派。