[英]toString in subClasses Cannot Override abstract toString , Java
我有这个很长的练习,我在每个子类中都遇到了一个问题。 问题说,我不知道我在写作时犯了什么错误。 如果您可以检查 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 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
谢谢
您需要将函数的返回类型更改为String
并返回文本而不是将其写入System.out
。
public String toString() {
return "(" + super.getX() + ", " +
super.getY() +") " + "side: " + super.getDimension1();
}
编辑:如果您想拥有一个以文本形式将对象直接输出到System.out
的方法,则需要将其称为toString()
以外的其他名称。 这是因为toString()
是一个属于java.lang.Object
的方法,所有 Java 类都会自动扩展它。
toString() 必须返回String
而不是void
。
// false
public abstract void toString();
// right
public abstract String toString();
注意:您不应在 toString() 方法中打印 (System.out)。 您应该返回对象的字符串表示。
toString()
在Object
类中实现,每个类都扩展它。 这个方法在每个类中,我们不能有两个签名相同但返回类型不同的方法。 由于toString()
已经存在返回类型String
,我们不能再有一个toString()
具有任何其他返回类型。
因为您尝试使用 void 返回类型覆盖它。 toString 应该返回一个字符串。
它应该返回一个字符串而不是 void。
public abstract String toString()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.