Java 为什么我会得到这种奇怪的输出?

Java 为什么我会得到这种奇怪的输出?,java,Java,我有三节课 public abstract class Champion { private String name; public Champion(String ChName) { name = ChName; } public void setName(String ChName) { name = ChName; } public String getName() {

我有三节课

public abstract class Champion 
{
    private String name;

    public Champion(String ChName)
    {
        name = ChName;

    }
    public void setName(String ChName)
    {
        name = ChName;
    }
    public String getName()
    {
        return name;
    }

}
第二:

public class Mage extends Champion {

    public Mage(String ChName)
    {
        super(ChName);
    }

    public String toString()
    {
        return String.format("%s",super.toString());
    }
}
我的主要观点是:

public class JavaApplication2 {

    public static void main(String[] args) {
      Mage mage = new Mage("ori");
      System.out.println("champion is "+mage);          
    }

}
输出应为“champion is ori” 但我得到: “冠军是javaapplication2。Mage@1fee6fc"


我做错了什么?

您需要在
Champion
中重写
toString()
,因为
Mage.toString()
中对
super.toString()
的调用将调用
Object.toString()

通过调用
super.toString()
方法调用
对象,给你你看到的结果


您需要实现
Champion
toString()
方法。

谢谢您,先生,很抱歉给您带来麻烦。“从现在起,我会记得这样做的。@user1913592,没问题,不需要道歉。”。