昨天,总监问了这样一个问题:问什么Object类要有toString()方法?这是面向对象的一个知识,可是究竟为什么呢?请大家帮忙解释!!

解决方案 »

  1.   

    MFC的CObject类,并没有类似的方法啊。可见,这不一定是必要的方法。Java,Ruby,Python,C#里面都提供了这个方法,是出于想让每一个类,都有一个“人可读”的信息。
      

  2.   

    这个是最开始java的设计,他们认为每个对象都可以用String来表示,所以强制性加了这个方法,类似的还有hashCode.这个就是不同理解了.你可以当他没有,不过有时候用起来很方便
      

  3.   


    这个理解正确。一个对象,就算它运行的再好,如果不把结果展示出来也是白费。
    当然一个对象可能有很多个辅助对象,大家共同完成一个任务,但是java设计者可不知道你的程序哪个是最后的发言人,所以,它只能认为,任何一个类都是能展示自己的,也即是他们默认都是拥有toString()方法的,因为他们都拥有共同的超类Object.当然,java设计者也不知道他们能干什么,愿意展示什么,所以只好用他们的名字加上Hash编码显示了,
     public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
     }
    比如:
    java.lang.Object@de6ced
      

  4.   

    楼上说的比较全面了 展示是一个方面吧另一方面 我觉得这个问题另一个重心在于Object吧 都知道Object是所有类的父类  所以在Object类中申明的抽象方法 可以为子类提供很好的服务
      

  5.   

    程序约等于(输入,处理,输出)多么复杂的对象也要有自己的输出。输出的作用:测试,信息展示,人机交互的媒介toString(),就是输出。(在输出前可以进行处理)--别的类也有对象处理固化作用。
      

  6.   

    Linux+Oracle+Java 技术群:87923477 欢迎热爱技术的朋友们的参与
      

  7.   

    就是不至于让每个对象都outprint内存地址也就是“人可读”
      

  8.   

    java的print方法 字符串的“+”操作符等都需要每个对象有一个返回字符串的方法 作为共同基类的Object 有一个这样的方法是再适合不过了