黑马程序员技术交流社区

标题: 不太明白为什么很多类在编写的时候要覆写toString方法!!! [打印本页]

作者: 邓海涛    时间: 2012-4-7 21:15
标题: 不太明白为什么很多类在编写的时候要覆写toString方法!!!
为什么看见很多视频和书本里面在定义了一个类之后:都会说要覆写toString方法呢?
就是public String toString(){代码}这个方法?写和不写有什么区别呢?
String类中不是实现了public String toString(){代码}这个方法的吗?
作者: 秦岩    时间: 2012-4-7 21:18
本帖最后由 lyqinyan 于 2012-4-7 21:19 编辑

如果我们把对象加入到左边listbox中显示,显示时默认字符串表示,而对象的字符串表示就是调用对象的toString方法。而默认的toString方法是从Object类继承下来的,显示对象名称。所以如果要达到预定的目的就需要覆写toString的方法。
作者: 宋蕈    时间: 2012-4-7 21:20
每次在打印输出一个类的对象的时候都会自动调用toString() 方法, 如果你对想要打印的对象有什么输出
要求,那就只能覆写一个toString() 方法
作者: 曾晓文    时间: 2012-4-7 21:30
当你打印一个类对象时,该对象会调用public String toString()方法。如果不覆写该方法 就调用Object类的toString方法,固定的返回:类名称+ '@' + 类的哈希值。如果我们不想调用toString方法时只打印这些信息,我们就要覆写该方法了,覆盖父类的方法,执行我们自己想要的代码。
作者: 曾晓文    时间: 2012-4-7 21:31
当你打印一个类对象时,该对象会调用public String toString()方法。如果不覆写该方法 就调用Object类的toString方法,固定的返回:类名称+ '@' + 类的哈希值。如果我们不想调用toString方法时只打印这些信息,我们就要覆写该方法了,覆盖父类的方法,执行我们自己想要的代码。
作者: 郑苑东    时间: 2012-4-7 21:33
重写toString方法是根据我们的需要去重写的。。就像上面所说的字符串。。当我们打印字符串时我们希望打印的是字符串的内容而不是地址。。那么我们就需要重写Object类中的方法。。。。因为Object类中的toString方法打印的是类型@对象地址的形式。。。而且当我们打印一个对象的时候都会自动去调用toString方法。。。
作者: 郑涛    时间: 2012-4-7 21:45
如果不覆写默认继承Object类的toString方法
  public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }打印哈希值。
通常打印哈希值不能满足开发的需求,要自己编写类的toString方法以满足具体需求。
作者: 秦超    时间: 2012-4-7 21:52
java里提供的toString是默认的,它只是单纯的字符串输出,如果对字符串输出要有自己的定义,这时候就需要复写toString方法了.
作者: 攻城狮    时间: 2012-4-7 21:57
如果不覆写默认继承Object类的toString方法
  public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }打印哈希值。
如果对字符串输出要有自己的定义,这时候就需要复写toString方法了.。
作者: 金兴    时间: 2012-4-7 22:06
这个方法是所有对象的方法,因为它是Object里的方法,因为所有的类都继承Object  ,而所有类都继承Object,所以所有对象都有这个方法.总而言之:它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法,写这个方法的用途就是为了方便操作.
作者: newlaw2013    时间: 2012-4-7 22:31
    系统默认提供的toString方法很多时候不能满足人机交互的需求,比如说输出格式方面的要求,视频中重写
toString方法的时候,会经常加一些让我们看起来更容易理解的东西,如果交给系统去做,那就太死板了,
还是人有足够的灵活性啊
作者: pray    时间: 2014-4-26 04:37
初来乍到,请多多关照。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2