Java 使用被重写的toString()的toString()重写

Java 使用被重写的toString()的toString()重写,java,overriding,Java,Overriding,基本上这就是我想要达到的目标 classname@address(?)[原始toString()],对象名称,对象年龄 @Override public String toString() { return String.format("%s , %s , %d", this.toString(), this.getName(),this.getAge()); } 问题,toString()被递归调用 我不能调用super.toString(),因为这不是我想要的。我希望“this”调用原始的

基本上这就是我想要达到的目标

classname@address(?)[原始
toString()
],对象名称,对象年龄

@Override public String toString()
{
return String.format("%s , %s , %d", this.toString(), this.getName(),this.getAge());
}
问题,
toString()
被递归调用

我不能调用super.toString(),因为这不是我想要的。我希望“
this
”调用原始的
toString()

这个

因为明显的原因不起作用

我已经没有动力了,一旦一个方法被重写,这能做到吗?即调用原始实现

(我的编辑)基本上我需要的是:覆盖toString以显示“this”对象的两个属性,并且我还希望让“this”调用原始toString


这不是一个项目或工作。只是玩(学习)Java语言。谢谢

您正在寻找
super.toString()
事实上,我也在努力实现同样的目标,而
super.toString()
并不是我想要的。我认为这是不可能的

具体来说,我在Groovy/Grails中有一个域类,我想重写它的
toString()
方法来添加一些额外的信息:

class Child extends Parent {

    public String toString() {
        return super.toString(this) + extra_info // not possible!!!
    }
}
这与
返回super.toString()+extra_info
不同。在一个例子中,我得到例如

com.example.domain.Parent:15,额外信息
。(错误。实例相同,但
toString
包含类型信息。)

另一方面:


com.example.domain.Child:15,额外信息
。(正确,但不可能。)

如果覆盖
toString()
方法,则除了您创建的实现之外,没有其他实现。调用
super.toString()
到底有什么问题?您是否尝试过
super.toString()
(没有
this
)?原始
toString()
可能存在重复,您是指此确切类中此确切方法的早期版本,还是
toString()
来自超类?@Marin如果你说你不想调用super.toString(),你想让实例调用super.toString()。。。如果覆盖了toString()方法调用super.toString(),则实例调用的是基本实现。要么你试图描述一些其他想要的效果,要么你只是在虚张声势。Hello SLaks,我想让“this”对象调用super.toString()。这是同一件事吗?如果我调用super.toString(),它是否知道调用super.toString()的是“this”对象?thanks@Marin:
super
this
。无法在任何其他实例上调用super的
toString
。@Marin
引用当前对象,
super
引用当前对象的父类。因此,“this”类的父类是
super
方法的调用方并不重要。无论方法的调用方是什么,该方法都将始终执行相同的操作。即使您调用super.toString(),也会对此调用toString。它只是将在“this”上调用的被重写toString的代码。调用超类方法不会改变调用它的对象。同一个对象同时属于子类和超类类型。@JBNizet谢谢JB。所以如果我把事情搞清楚了,super是调用超类方法的“this”对象吗?
class Child extends Parent {

    public String toString() {
        return super.toString(this) + extra_info // not possible!!!
    }
}