繁体   English   中英

子类中的 toString 不能覆盖抽象 toString ,Java

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM