该代码显示什么? (Java继承)

问题描述 投票:-3回答:1
    public class Main {
    static void method(A a){
        System.out.print("one");
        }

    static void method(B b){
        System.out.print("two");
        }

    static void method(Object obj){
        System.out.print("three");
        }

    public static void main(String[] args) {
        C c = new C(); 

        method(c);
    }
}
class A {}
class B extends A{}
class C extends B{}

您看到标题时,我认为它显示的是“三个”,但真正的答案是“两个”。有人可以向我解释吗?谢谢!

java inheritance methods static
1个回答
0
投票

重载将解析为适用于该参数的最特定类型。在ABObject中,适用于类型C的引用的最特定类型是B。因此将调用method(B)

© www.soinside.com 2019 - 2024. All rights reserved.