0

我有三个班

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”

我究竟做错了什么?

4

2 回答 2

8

您需要覆盖toString()inChampion因为对 in 的调用super.toString()Mage.toString()调用Object.toString().

于 2012-12-18T17:16:57.577 回答
0

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

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

于 2012-12-18T17:19:12.177 回答