问答详情
源自:9-8 Java 中的 Object 类 Ⅰ

为啥这样写还是输出的是地址?

package com.imoic;


public class Initail {

/**

*/

public static void main(String[] args) {

Dog dog=new Dog();

System.out.println(dog.tostring());

}

为什么要在dog那个方法里面去写tostring,这样写不是一样可以吗?


}


提问者:明天你好我去 2016-11-08 23:03

个回答

  • 没了哆啦A梦的大熊
    2017-04-29 16:59:58

    楼上的回答 就很皮

    只说了一半。

    马老师来告诉你具体原因:因为啊,Object类的toString()方法,就是返回一个地址啊。你直接调用toString()方法,是调用Object类的toString()方法。因此我们需要在自己定义的类中,重写toString()方法。来达到返回字符串的目的。

  • leowei
    2016-11-08 23:41:28

    s首先,如果是System.out.println() 输出对象,java会默认调用一个对象的toString()

    所以 dog 和dog.toString() 效果是一样的

    但是,可能你理解有偏差!

    所谓重写,是在继承的基础上,去改写父类的方法

    如果直接调用dog.toString() 方法,那么使用的是父类的继承来的方法

    一定是要理解重写的意思,首先是要由继承,然后重写父类方法!

    System.out.println(dog.tostring()); 这个外部调用,只是调用了父类方法而已,因为你在dog类中没有重写从

    Object 类继承的toString() 方法