gpt4 book ai didi

Java重载与继承方式选择

转载 作者:行者123 更新时间:2023-11-29 06:31:17 25 4
gpt4 key购买 nike

让我们研究以下代码:

public class App {

public static class A {

public void doSmth3(long a) {
System.out.println("This is doSmth3() in A...");
}
}

public static class B extends A {

public void doSmth3(int a) {
System.out.println("This is doSmth3() in B...");
}
}

public static void test(A a) {
a.doSmth3(1);
}

public static void main(String[] args) {
test(new B());
new B().doSmth3(3);
}

}

输出:

This is doSmth3() in A...
This is doSmth3() in B...

在我这边,main 中的 2 行应该提供相同的结果,但结果不同。

我的意见 This is doSmth3() in A... 应该输出 twise,因为它正在重载。

请解释输出

最佳答案

简单:当 Java 编译器在 test(A) 中看到对 a.doSmth3(1) 的调用时,它只能将其编译为对 的调用code>A#doSmth3(long),这是唯一可用的方法。请注意,B#doSmth3(int)A#doSmth3(long)重载,而不是覆盖 .

关于Java重载与继承方式选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33307152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com