subClasses中的toString不能覆盖抽象toString,Java

时间:2011-10-11 18:23:27

标签: java tostring

我有这么长时间的练习,每个子课都遇到了问题。 问题说,我不知道我在写作时犯了什么错误。 如果你可以检查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

感谢

5 个答案:

答案 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()