我是新手上路 请大家多多指教:
  public class test {
public void diaoyong (){
System.out.println(this);
System.out.println(super.toString());
}
public static void main(String[] args) {
test a = new test();
a.diaoyong(); }}
这段代码运行的结果是:test@a90653
                      test@a90653
为什么两次输出结果会是一样的?我知道的是打印对象其实就是调用该对象的toString()方法,让我疑惑的是当打印this代表的对象时应该输出test@a90653 而当打印super.toString()时 则应该输出java.lang.Object@90653才对呀 求解答 在线等

解决方案 »

  1.   

    toString方法,子类不重写的话,输出的是 对象的类型+@+对象的哈西值
    System.out.println(this);
    System.out.println(super.toString());
    System.out.println(this.getClass().getName()+"@"+Integer.toString(this.hashCode(), 16)); //如果不重写toString,缺省打印这样的结果
      

  2.   

    一个对象,不管是调用this.getClass还是调用super.getClass,得到的都是对象本身的类型
    因为对象对外表示只有一个类型,就是自己,至于内部有个super,这个super只是对象的一部分,并不代表整个对象,所以不会表示为super的类型
      

  3.   

    System.out.println(super.toString());
    //相当于子类调用父类的toString()方法,其实就是this.toString();
    如果想得到想要的结果-->super.getClass().toString()
      

  4.   

    fighting,每天回帖,既得十分可用分
      

  5.   

    因为你没有覆盖这个父类的toString()方法,所以子类的toString()方法还是父类的那个
      

  6.   

    super   是调用父类方法     this 是指本类  
      

  7.   


    System.out.println(this.toString());
    System.out.println(this.getClass().getSuperclass().toString());
      

  8.   

    fighting,每天回帖,既得十分可用分
      

  9.   

    方法没有被覆盖,toString()所显示的永远是当前对象的类和地址的组合
      

  10.   

      受教育了。thank u