为什么要重写toString

为什么要重写toString

toString怎么用?前言一、什么toString?二、toString的代码1.重写前2.重写直接继承于object类的toString3.重写间接继承于object类的toString总结

前言

在开发中,代码量变高之后,常常会需要查看当前对象的一些信息,这时候toString的重写应需而生!

一、什么toString?

在Java中,toString() 方法是 Object 类中定义的一个方法。toString() 方法的作用是返回对象的字符串表示。在没有重写 toString() 方法时,默认情况下返回的字符串表示为“类名@哈希码” (包名+类名@对象的16进制内存地址)的形式。 重写 toString() 方法可以自定义返回的字符串,使得输出的信息更具有可读

二、toString的代码

1.重写前

这里我们先要掌握一个知识点,继承,在我们没有继承任何一个父类之前,是默认继承Object类,也被称为隐式继承,也就是为什么有些方法,我们在自定义类中,没有写,但是可以使用的原因,这里不过多介绍,大家感兴趣可以去仔细阅读以下Object中有哪些方法。

这里可以看到,在没有重写之前,返回的是类名+@ + 这个类的哈希码值,也就是我们常说的十六进制的一个地址,那我们在开发中很多时候不想要返回地址,想要返回这个类的一系列属性,该怎么做呢?

思路:重写toString方法,使其返回当前自定义类的一些属性

2.重写直接继承于object类的toString

示例:新建一个Person类,不继承于任何类(默认隐式继承于object类)

箭头的位置,很明显没有extends,那么就代表直接隐式继承于toString类

这个时候我们在类中重写方法,可以直接手动输入public String toString(){ },在括号里书写,也可以快捷键alt + insert,里面有一个toString,可以快捷重写toString。

@Override

public String toString() {

return "Person{" +

"name='" + name + '\'' +

", age=" + age +

", sex='" + sex + '\'' +

", job='" + job + '\'' +

", duty=" + duty + '\'' +

'}';

}

这样我们重写后的效果就是输出类名{各种属性名:属性值}了,运行一下看看效果。

因为是字符串,可修改性比较高,大家可以在重写的时候书写成自己喜欢的样子,我这种是快捷键创建出来的所以比较规范,根据个人喜好进行修改。

3.重写间接继承于object类的toString

那现在直接继承于Object的类会重写toString了,间接继承于Object类的咋办?

一样的,第一种手动去敲,在获取你要重写这个类的属性的时候,因为有些属性是继承于父类的,所以获取属性值的时候我们就需要用get。。。()方法,例如:

我写一个Doctor类继承于Person,然后需要重写toString

代码:

public String toString() {

return "Doctor{" +

"name='" + getName() + '\'' +

", age=" + getAge() + '\'' +

", sex='" + getSex() + '\'' +

", job='" + getJob() + '\'' +

", duty=" + getDuty() + '\'' +

"office='" + office + '\'' +

'}';

}

这样就实现了doctor类中所有属性的显示,运行一下看看效果。

总结

以上就是toString的重写,大家在开发中一定要注意,自定义类(非测试类),都要重写toString,养成好习惯,否则苦不堪言,如果这篇文章帮助到了你,帮忙三连,持续更新中…

相关推荐

华为 Mate 9(2016年11月上市)
best365官网手机版

华为 Mate 9(2016年11月上市)

📅 08-02 👁️ 3083
监控探头怎么安装视频(监控头安装视频教程)
bet体育365官网怎么样

监控探头怎么安装视频(监控头安装视频教程)

📅 07-27 👁️ 3344
长汀千米高山
365官网哪个是真的

长汀千米高山

📅 07-15 👁️ 336
倩女幽魂哪个职业最强?职业排行揭秘!
bet体育365官网怎么样

倩女幽魂哪个职业最强?职业排行揭秘!

📅 07-10 👁️ 9957
唐朝的“不良人”是个什么官职,为何有恶迹还能为官府效力
数据库品牌盘点:了解这些知名厂商和产品! (数据库有哪些品牌)