//定义Animal类
package Ani; 
public class Animal {
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Animal(String aType)
{
type=aType;
}
public String ToString()
{
return "This is a"+type;
}
}//Dog类派生于Animal
package Ani;
public class Dog extends Animal {
private String name;
private String breed; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getBreed() {
return breed;
} public void setBreed(String breed) {
this.breed = breed;
} public Dog(String aName) {
super("Dog");
name = aName;
breed = "Unknow";
} public Dog(String aName, String aBreed) {
super("Dog");
name = aName;
breed = aBreed;
}
}//主函数
package Ani;
public class TestApp { /**
 * @param args
 */
public static void main(String[] args) {
Dog aDog=new Dog("111","aaa");
Dog bDog=new Dog("222","bbb");
System.out.println(aDog);
System.out.println(bDog);
}
}为什么输出不是Animal中定义的ToString类
而是   Ani.Dog@1fb8ee3
       Ani.Dog@61de33坐等高人、在此谢过!~

解决方案 »

  1.   

    System.out.println(aDog.ToString());
    System.out.println(bDog.ToString());
      

  2.   

    public String ToString()重写的方法名是 toString
      

  3.   

    toString()方法是从0bject继承而来的,你要把此方法重写才能打印出来你想要的
      

  4.   

    这样改就行了
    public String toString()
    {
    return "This is a"+type;
    }
      

  5.   

    System.out.println(aDog.ToString());
    System.out.println(bDog.ToString());
    ==========
    这样显示的是:
    This a dog
    This a dog
      

  6.   

    注意:1、你的ToString是方法,不是类!!!
          2、Ani.Dog@1fb8ee3、Ani.Dog@61de33,是地址
          3、注释很不明确不知道你要显示成什么样子的,暂且不说重写
      

  7.   

    楼主贴上写的程序:System.out.println(aDog);
                    System.out.println(bDog);
    应该是输出的是对象的字符串表示。参考API--java.lang.object.toString()
    ------------
    toString
    public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。 
    Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于: getClass().getName() + '@' + Integer.toHexString(hashCode())
     
    返回:
    该对象的字符串表示形式。----------
    或者在Dog类中重载,或者改成:
    System.out.println(aDog.ToString());
    System.out.println(bDog.ToString());
      

  8.   

    public String ToString()重写的方法名是 toString 
     重写函数的方法 最好先看一下API文档 
      

  9.   

    我也是新手,路过
    高手都说了方法名错了,
    但是我不明白你这程序那么多public class 怎么可以呢。
      

  10.   

    这东西好象与objcet有关,你看看原码就知道了
      

  11.   

    toString()从Object继承而来!只有File,String,Date和包装类的toString()是比较内容剩下自己定义的类要重写否则是getClass().getName() + '@' + Integer.toHexString(hashCode())