JVM 如何在内部区分方法重载和方法覆盖?

jav*_*bie 5 java

我想知道JVM如何在内部区分方法重载和方法覆盖。

Ats*_*sby 5

JVM 只处理方法覆盖。通过在派生类中添加具有相同签名的方法来覆盖方法(唯一允许的区别是返回类型,允许更具体)。签名对方法的名称以及参数的类型和返回类型进行编码。

方法重载意味着具有多个具有相同“简单名称”但签名不同的方法。在编译时,javac编译器根据参数的类型选择同名方法之一,并将其​​签名放在编译.class文件中。编译后的 Java 字节码中的方法调用必须指定被调用者的签名。