我有这么长时间的练习,每个子课都遇到了问题。 问题说,我不知道我在写作时犯了什么错误。 如果你可以检查4个toString方法,我会非常熟悉。
代码在这里:http://paste.org/pastebin/view/39488 我知道我应该通过这里的代码,但它很长,而且我无法很好地组织它。
toString() in Shape cannot override toString() in java.lang.Object; attempting to use incompatible return type
toString() in Square cannot override toString() in java.lang.Object; attempting to use incompatible return type
`
toString() in Sphere cannot override toString() in java.lang.Object; attempting to use incompatible return type
toString() in Cube cannot override toString() in java.lang.Object; attempting to use incompatible return type
感谢
答案 0 :(得分:6)
您需要将函数的返回类型更改为String
并返回文本,而不是将其写入System.out
。
public String toString() {
return "(" + super.getX() + ", " +
super.getY() +") " + "side: " + super.getDimension1();
}
编辑:如果您想要一个以文本形式直接将对象输出到System.out
的方法,则需要将其称为toString()
之外的其他内容。这是因为toString()
是属于java.lang.Object
的方法,所有Java类都自动扩展。
答案 1 :(得分:5)
toString()必须返回String
而不是void
。
// false
public abstract void toString();
// right
public abstract String toString();
注意:不应在toString()方法中打印(System.out)。您应该返回对象的String表示。
答案 2 :(得分:1)
因为您尝试使用void返回类型覆盖它。 toString应该返回一个String。
答案 3 :(得分:1)
它应该返回一个字符串而不是void。
public abstract String toString()
答案 4 :(得分:1)
toString()
在Object
类中实现,每个类都扩展它。这个方法在每个类中,我们不能有两个具有相同签名但返回类型不同的方法。
由于toString()
已经存在返回类型String
,因此我们不能再使用其他任何返回类型toString()
。