【问题标题】:About overriding toString() method in Java关于在 Java 中重写 toString() 方法
【发布时间】:2021-01-19 07:06:50
【问题描述】:

我正在观看一个试图覆盖 Java 中的 toString() 方法的视频,如下所示

我对这行代码很好奇:

returnString += items[i].toString();

看来这里的toString()还是Object类的那个。

为什么这行代码不会导致我定义的新方法的递归?

也就是说,我怎么知道写在我试图重写的新方法中的方法是哪个方法?

@Override
public String toString() {
    String returnString = "{";

    for (int i = 0; i < size-1; i += 1) {
        returnString += items[i].toString();
        returnString += ", ";
    }
    returnString += items[size-1];
    returnString += "}";
    return returnString;
}

【问题讨论】:

  • 我猜 items[i] 属于不同的类别,或者至少它没有引用相同的项目。因此它要么调用不同的方法,要么递归是有限的。

标签: java oop overriding tostring


【解决方案1】:

如果items 是另一个类的数组,则此行从另一个类调用toString()。 如果items 是当前类的数组,则递归将在array.length == 0 时停止,或者将是无限递归(将抛出StackOferflowException)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2013-07-12
    • 1970-01-01
    • 2012-12-07
    • 2013-06-30
    • 2017-08-01
    相关资源
    最近更新 更多