我是新手上路 请大家多多指教:
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才对呀 求解答 在线等
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才对呀 求解答 在线等
System.out.println(this);
System.out.println(super.toString());
System.out.println(this.getClass().getName()+"@"+Integer.toString(this.hashCode(), 16)); //如果不重写toString,缺省打印这样的结果
因为对象对外表示只有一个类型,就是自己,至于内部有个super,这个super只是对象的一部分,并不代表整个对象,所以不会表示为super的类型
//相当于子类调用父类的toString()方法,其实就是this.toString();
如果想得到想要的结果-->super.getClass().toString()
System.out.println(this.toString());
System.out.println(this.getClass().getSuperclass().toString());