gpt4 book ai didi

java - 为什么这不打印 "super"?

转载 作者:行者123 更新时间:2023-12-01 07:29:36 27 4
gpt4 key购买 nike

我有这个代码:

public class Superclass {

public void print() {
System.out.println("super");
}
}

public class Subclass extends Superclass {

public void print() {
System.out.println("sub");
}
}

然后是这个:

Subclass obj4 = new Subclass();
((Superclass) obj4).print();

我认为上面的打印语句打印“super”,因为它被转换为父类(super class),但事实并非如此 - 它打印“sub”。这是为什么?

最佳答案

类型的向上转型并没有什么不同。调用哪个 toString()实例的运行时类型决定,而不是引用。

由于 Subclass 覆盖了 Superclass 的 toString,因此调用任何 Subclass 实例将始终解析为 Subclass 的到字符串。

Object obj = new Subclass();
obj.toString(); // will still return "sub"

关于java - 为什么这不打印 "super"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19172157/

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