子类中的toString不能重写抽象toString,Java

子类中的toString不能重写抽象toString,Java,java,tostring,Java,Tostring,我做了一个很长的练习,在每一个子班我都遇到了一个难题。 问题是,我不知道我在写作时犯了什么错误。 如果你能检查一下4种toString方法,我会非常感激 代码如下: 我知道我应该通过这里的代码,但它很长,我不能很好地组织它 Shape中的toString()无法覆盖java.lang.Object中的toString();试图使用不兼容的返回类型 Square中的toString()无法覆盖java.lang.Object中的toString();试图使用不兼容的返回类型 ` Sphere中的t

我做了一个很长的练习,在每一个子班我都遇到了一个难题。 问题是,我不知道我在写作时犯了什么错误。 如果你能检查一下4种toString方法,我会非常感激

代码如下: 我知道我应该通过这里的代码,但它很长,我不能很好地组织它

Shape中的
toString()无法覆盖java.lang.Object中的toString();试图使用不兼容的返回类型

Square中的
toString()无法覆盖java.lang.Object中的toString();试图使用不兼容的返回类型
`

Sphere中的
toString()无法覆盖java.lang.Object中的toString();试图使用不兼容的返回类型

多维数据集中的
toString()无法覆盖java.lang.Object中的toString();试图使用不兼容的返回类型

谢谢

toString()必须返回
String
而不是
void

// false
public abstract void toString();

// right
public abstract String toString();    

注意:您不应该在toString()方法中打印(System.out)。您应该返回对象的字符串表示形式。

,因为您试图用void返回类型覆盖它。toString应该返回一个字符串。

它应该返回一个字符串,而不是void

public abstract String toString()

您需要将函数的返回类型更改为
String
,并返回文本,而不是将其写入
System.out

public String toString() {
    return  "(" + super.getX() + ", " +
    super.getY() +") " + "side: " + super.getDimension1();
}
EDIT:如果您希望有一个方法以文本形式将对象直接输出到
System.out
,则需要调用它而不是
toString()
。这是因为
toString()
是属于
java.lang.Object
的一种方法,所有java类都会自动扩展该方法。

toString()
对象
类中实现,并且每个类都会扩展它。这个方法存在于每个类中,我们不能有两个签名相同但返回类型不同的方法。
由于返回类型为
String
toString()
已经存在,我们不能再使用任何其他返回类型的
toString()

有没有办法返回System.out?因为我认为我从一开始就犯了一个错误,这将花费我重新编写整个程序:SReturn System.out毫无意义。toString()必须返回一个字符串。我刚刚这样做了,但是当我使用一个随机方法时,输出是完全不同的。在我意识到问题需要它之前,我调用了print,因为toString调用
toString()
,应该没有输出。尝试更新您的
displayShapeInfo()
,以代替
shapeArray[i].toString()
调用
System.out.println(shaperray[i].toString())