Java 当方法之间的差异是参数子类型时,将null传递给重写的方法

Java 当方法之间的差异是参数子类型时,将null传递给重写的方法,java,oop,jvm,Java,Oop,Jvm,产出:B 为什么虚拟机调用这个方法f(null){System.out.println(“B”);} 为什么不f(null){System.out.println(“A”);} 调用具有大多数特定参数类型的方法。这是规则 这是从 如果一个方法调用可以访问并适用于多个成员方法,则有必要选择一个成员方法来为运行时方法分派提供描述符。Java编程语言使用的规则是选择最具体的方法 请检查您的格式…它不清楚…我们需要再次挖掘规格。。。 public class Test{ public stat

产出:B

为什么虚拟机调用这个方法
f(null){System.out.println(“B”);}

为什么不
f(null){System.out.println(“A”);}


调用具有大多数特定参数类型的方法。这是规则 这是从

如果一个方法调用可以访问并适用于多个成员方法,则有必要选择一个成员方法来为运行时方法分派提供描述符。Java编程语言使用的规则是选择最具体的方法


请检查您的格式…它不清楚…我们需要再次挖掘规格。。。
public class Test{

    public static class A {}
    public static class B extends A {}

    public void f(A a) {System.out.println("A");}
    public void f(B a) {System.out.println("B");}

    public static void main(String[] args) {
        new Test().f(null);
    }
}