【问题标题】:Java function overloading query [duplicate]Java函数重载查询[重复]
【发布时间】:2014-07-03 07:04:10
【问题描述】:

A 扩展 B

public class Test {

public static void print(A obj) {
    System.out.println("print A");
}

public static void print(B obj) {
    System.out.println("print B");
}

public static void main(String [] args ) {  
    A x = new B();

    print(x);
}

}

为什么它会打印“print A”? 为什么函数重载不会在运行时查找 x 的真实类型?

【问题讨论】:

    标签: java overloading


    【解决方案1】:

    因为重载不是覆盖。编译器根据声明的参数类型绑定方法。

    【讨论】:

      【解决方案2】:

      为什么函数重载不会在运行时查找x 的真实类型?

      因为函数重载不会在运行时查找x 的真实类型,by JLS #8.4.9:“使用了实际参数的数量(以及任何显式类型参数)和参数的编译时类型,在编译时,确定将被调用的方法的签名”。

      【讨论】:

        猜你喜欢
        • 2021-11-16
        • 2014-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多