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