【问题标题】:Issue with same method name in parent as extended class父类中的方法名称与扩展类相同的问题
【发布时间】:2011-03-07 22:13:15
【问题描述】:

我有一个父类和一个扩展类,都包含一个toString() 方法。

我将如何从测试应用程序调用父类的 toString() 方法?

现在调用扩展类的toString方法是objectname.toString(),但是父类呢?

提前感谢您的帮助。

【问题讨论】:

  • 如果您想从子类以外的其他地方调用 super.toString(),请参阅这个 SO 问题:*.com/questions/1032847/…
  • super 关键字是这里的关键。

标签: java class methods


【解决方案1】:

你不能。这称为多态性,这就是 OOP 的全部内容。 子类 toString 重新定义(覆盖)父 toString 方法。

如果您希望能够调用父级,则需要添加另一个方法,使用另一个名称:

@Override
public String toString() {
    // redefine the toString method
}

public String parentToString() {
    return super.toString();
}

【讨论】:

  • 这正是我所需要的,并且注册只是为了支持你。感谢您的帮助。
【解决方案2】:

应该这样称呼

class Child extends Parent{

    public String toString()
    {
       String superToString =  super.toString();
       // do something with superToString

       return someString;
    }

}

如果你只是要返回 super.toString() 那么不需要在子类中重写 toString()。

【讨论】:

    【解决方案3】:

    使用 super 关键字可以访问父类方法。

    【讨论】:

      最近更新 更多