猿问

为什么打印对象的时候调用的是toString()方法?

例如:

package k;

public class Animal {
	public int age=10;
	public Animal(){
		System.out.println("animal class is running");
	}
}
package k;

public class Dog extends Animal {
	public Dog(){
		System.out.println("dog class is running");
	}
}
package k;

public class HelloWorld {
	public static void main(String[] args){
	Dog dog=new Dog();
	System.out.println(dog);
	}
}

结果:

animal class is running
dog class is running
k.Dog@1db9742


打印dog对象时有那么多方法不用,为什么只打印了toString()

道临
浏览 3528回答 4
4回答

Raelovejava

不明白你问的是什么…toString方法是Object类的方法,所有类都从Object类继承。在参数是一个对象时,会首先调用该对象的toString方法

KevinHY

Java中输出一个类的对象的时候,会调用这个Object类的toString()方法。自己写的类没有覆盖这个方法的话就是继承Object类的这个方法,Object中toString()方法的实现是这样的:getClass().getName() + "@" + Integer.toHexString(hashCode())。后面跟的是这个类的哈希码值,如果希望这个类打印出你希望的格式,你就要覆盖toString方法,按照你自己想要的格式对toString()方法进行重写。

笑揽清溪月

打印对象信息时,会调用toString方法。现在的Dog类中的方法是构造方法,创建对象时调用该方法。

大咪

打印对象我记得好像只能用toString方法吧- -,你这段程序的目的在于告诉你,如果打印输出子类,先运行的会是父类,然后再运行子类结果。。至于你说的那个我没太懂- -。。
随时随地看视频慕课网APP

相关分类

Java
我要回答