Method
5/23/26Less than 1 minute
Method
调用静态方法:类名.方法名
函数签名(Method Signature) 只包含两部分:
- 方法名 (Method Name)
- 参数列表 (Parameter List)(包括参数的类型、数量和顺序)
匹配方法
Java 虚拟机在确定到底执行哪个方法时,严格遵循以下两个阶段:
第一步:编译期看左边(确定方法签名)—— 静态绑定
编译器只看变量的声明类型。它会去该类型及其父类中,寻找参数最匹配的方法,并死死锁定这个方法的签名(参数类型)。
匹配顺序:精确匹配 $\rightarrow$ 自动向上转型(如 int $\rightarrow$ long $\rightarrow$ float $\rightarrow$ double) $\rightarrow$ 自动装箱 $\rightarrow$ 变长参数。
第二步:运行期看右边(确定具体实现)—— 动态绑定
程序运行起来后,JVM 只看变量实际指向的对象类型(即 new 出来的类型)。如果在第一步锁定的那个签名被实际对象所在的类**重写(Override)**了,就调用子类的;如果没有重写,就老老实实调用父类的。