OUTPUT:乙
为什么虚拟机会调用此方法f(null){System.out.println("B");}?
为什么不 f(null){System.out.println("A");}
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);
}
}
Run Code Online (Sandbox Code Playgroud)
调用具有最特定参数类型的方法.这是规则这是来自JLS第15.12.2.5节
如果多个成员方法都可访问并适用于方法调用,则必须选择一个为运行时方法调度提供描述符.Java编程语言使用选择最具体方法的规则.
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |