为了账号安全,请及时绑定邮箱和手机立即绑定

java子类中调用父类重写的方法。

java子类中调用父类重写的方法。

哆啦的时光机 2018-12-04 13:08:44
问题如下:public class Test {     public  String  toString(){  return super.toString();        }    public static void main(String args[]){     System.out.println(new Test());   } }运行结果:Test@de6cedpublic class Test {      public static void main(String args[]){     System.out.println(new Test());   } } 运行结果:Test@de6ced我产生的疑问是 第一个类打印的是其父类Object的地址吗?如果是那么为什么第二个打印的地址和其父类一样。我是这样想的 子类创建对象的时候需要调用父类的构造方法子类创建的同时父类也创建了,而且子类和父类分配同一个内存空间。不知道这样想对不对?
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

你可以看一下源码,在eclipse上,对准toString(),ctrl+鼠标左键,即可进入源码,看看toString的实现,

源码如下

return getClass().getName() + "@" + Integer.toHexString(hashCode());

 

“我产生的疑问是 第一个类打印的是其父类Object的地址吗?”

错。看来你对java还是不熟悉。Object类是所有类的父类。而你给出的两个类,其中一个重写了toString()方法,但是相当于没重写。因为Object类是所有类的父类,所以也是Test的父类。

如果你的类Test没重写toString的方法,则调用你父类(即Object)的toString方法。

如果你的类Test重写了toString方法,则调用重写的那个方法。

但是为什么说你重写了之后相当于没重写呢?因为你重写的方法还是调用了父类的toString方法!所以效果是一样的。


查看完整回答
反对 回复 2018-12-08
?
动漫人物

TA贡献1815条经验 获得超10个赞

类只是创建对象的模板,不管怎么继承创建的对象只有一个。

toString返回的@后面是对象的hashcode,内容(值)相同的对象hashcode相同。


查看完整回答
反对 回复 2018-12-08
  • 2 回答
  • 0 关注
  • 851 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信