gpt4 book ai didi

java - 如果子类没有覆盖被父类(super class)覆盖的字符串,输出是什么?

转载 作者:行者123 更新时间:2023-12-01 23:38:43 24 4
gpt4 key购买 nike

在以下哪种情况下我会得到输出“Hello World”?

class A{

@Override
public String toString() {
return "Hello World";
}

}

public class B extends A{

public void print(){
//replace code that displays "Hello World"
}

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

}

我。 System.out.println(new A());

二. System.out.println(new B());

III.System.out.println(this);

1. only I
2. I and III
3. I and II
4. all I,II and III

答案是4,即所有I、II和III

我理解 I,但为什么 II 和 III 也是正确的?

编辑:还指定 jls 的哪一部分提供此规范?

最佳答案

B 类是 A 类的扩展,因此 B 继承了 A 类的所有方法(即 B 的 toString() 也将返回“Hello World”)。这就是为什么当您在 B 类对象(即 this 和 new B())上调用 print() 时,它会说“Hello World”。

如果您希望 B 类返回不同的字符串,则必须再次重新定义/覆盖 B 类中的 toString() 函数。

关于java - 如果子类没有覆盖被父类(super class)覆盖的字符串,输出是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18275584/

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