Java对象重写toString()方法的意义

一、万类继承Object

    Java在学到继承的时候,我们会知道,Object会是所有类的顶级类,其他类会隐性的继承Object类,何以见得会继承Object呢?口说无凭,直接看代码。

Java对象重写toString()方法的意义_第1张图片

 

    在上面,我定义了一个类TestObject,在main方法里面创建了这个对象,从左边代码行数可以看出,我这里代码没有超过9行,但调用TestObject实例化对象时,却出现了这么多方法。clone(),equals(),finalize()......这些方法我在当前类压根就没写。那出现这么多方法的原因是什么呢?

 

Java对象重写toString()方法的意义_第2张图片

   

    可以看到,方法后面写了来源,可见这个方法是来源于Object。

    我们在进到Object的源码看看,里面到底有些啥东东。

 

Java对象重写toString()方法的意义_第3张图片   

    可以看到,刚刚在上面见到的方法,Object类里面全都有,这下就能解释万类基于Object的事实了,我们并没有显式的继承Object,但Java偷偷的将我们写的类送了个爸爸

    好,解释到这一层,我们就可以探讨重写toString()方法的意义了。从上面Object源码的图片上我们可以看到toString()方法,

    这里返回了当前类的名字加上哈希码。(代码具体细节不解释,先知道是这回事就好

    我们回到我们自定义的TestObject类中输出一下

 

Java对象重写toString()方法的意义_第4张图片   

    从控制台中的输出,不难看出就是Object类里的toString()方法返回的结果。

 

二、为什么重写toString()方法呢?

假设我们自定义了一个类Student

Java对象重写toString()方法的意义_第5张图片我们没有重写toString()方法,那我们实例化Student对象时,想要输出对象里面的属性值,会出现这种情况。

Java对象重写toString()方法的意义_第6张图片可以看出,这里调用的是Object对象的toString()方法

重写toString()方法后

Java对象重写toString()方法的意义_第7张图片    重写后覆盖了原来Object类的toString()方法,这样就得到了我们想要的信息啦。

 

三、总结

    重写toString()方法其实是为了输出对我们有用的信息,不重写输出的信息没啥用。

 

你可能感兴趣的:(java)