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

时间:2012-12-18 17:16:14

标签: 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;
    }

}

第二

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

}

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

我做错了什么?

2 个答案:

答案 0 :(得分:8)

您需要覆盖toString()中的Champion,因为super.toString()中对Mage.toString()的调用将会调用Object.toString()

答案 1 :(得分:0)

致电super.toString(),您可以拨打Object toString()方法,为您提供所见的结果。

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