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

use*_*592 0 java

我有三节课

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;
    }

}
Run Code Online (Sandbox Code Playgroud)

第二:

public class Mage extends Champion {

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

    public String toString()
    {
        return String.format("%s",super.toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

我的主要人物:

public class JavaApplication2 {

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

}
Run Code Online (Sandbox Code Playgroud)

输出应该是"冠军是ori"但我得到:"冠军是javaapplication2.Mage@1fee6fc"

我究竟做错了什么?

hmj*_*mjd 8

你需要重写toString()Champion为调用super.toString()Mage.toString()会调用Object.toString().