gpt4 book ai didi

java方法重载继承与多态

转载 作者:行者123 更新时间:2023-11-29 03:22:08 25 4
gpt4 key购买 nike

这是我遇到的一个测试练习题,希望你能帮助我理解这些概念

让 Hawk 成为 Bird 的子类。假设某个类有两个重载方法 void foo(Hawkh) 和 void foo(Bird b)。哪个版本将在调用 foo(x) 之后执行声明 Bird x = new Hawk();

这是我到目前为止的代码,有人可以向我解释为什么 foo(bird b) 会被执行吗?

public class MPractice {
public static void main(String args[]) {
Bird x = new Hawk();
Third y = new Third();
y.foo(x);
}

}



public class Third {
void foo(Hawk h) {
System.out.println("Hawk");
}
void foo(Bird b) {
System.out.println("Bird");
}


}

最佳答案

当 Java 为选择方法执行重载决策时,它使用变量的类型而不是对象的运行时类型来选择方法。 x 的类型是Bird,所以选择的Third 方法是foo(Bird)

这是因为这里不涉及多态性;我们并没有在 Bird 变量 x 上调用一个可能被覆盖的方法,我们只是在一个不相关的类上调用一组重载方法中的一个,Third

关于java方法重载继承与多态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23001314/

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