gpt4 book ai didi

Java 转换、覆盖和多态性

转载 作者:行者123 更新时间:2023-12-02 04:18:59 25 4
gpt4 key购买 nike

在下面的示例中,我认为这与运行时多态性有关,但我无法弄清楚为什么 y.m1(x) 打印出 A。我的理解是,y.m1()调用了B类中的m1()方法,因为y包含B 的对象。由于x作为参数传递给它,并且它属于比B宽的类A,所以不会导致运行时错误?另外,为什么 z.m1(y) 也打印出 A

非常感谢!

 class A {
public void m1(A a) {
System.out.println("A");
}
}
class B extends A {
public void m1(B b) {
System.out.println("B");
}
}
class D2 {
public static void main(String[] args) {
A x = new A();
A y = new B();
B z = new B();
}
}

最佳答案

Bm1 不会覆盖 Am1 方法,因为它不采用相同的参数。因此 B 类由两个重载的 m1 方法组成,一个采用 A 对象,另一个采用 B 对象。这里只能使用静态多态性,这就是您可以看到此行为的原因。

关于Java 转换、覆盖和多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25828224/

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