Object类中的tostring方法的:
当我们输出一个对象时,实际是输出的是这个类中的tostring方法,是一个地址值,而不是类中的属性。
- 1
一:子类没有重写Object类中的toStrinng方法时的输出
public class ToStringUse {
public static void main(String[] args) {
// TODO Auto-generated method stub
A1 a1=new A1(12,"chentao");
System.out.println(a1.toString());//此时子类A1没有对根父类Object类中的toString没有进行重写
}
class A1{
int age;
String name;
A1(int age,String name){
this.age=age;
this.name=name;
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
输出结果
polymorphism.A1@28a418fc //输出的是对象的地址值,而非属性
- 1
二:在子类中重写toString方法,使得输出类中的属性
public class ToStringUse {
public static void main(String[] args) {
// TODO Auto-generated method stub
A1 a1=new A1(12,"chentao");
System.out.println(a1.toString());//此时的A1类中已经重写了Objiect类中的toString方法
}
class A1{
int age;
String name;
A1(int age,String name){
this.age=age;
this.name=name;
}
@Override//方法的重写
public String toString() {
return "A1[name="+name+","+"age="+age+"]";
}
}}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
输出结果:
12 chentao //输出的是类中的属性
- 1
关键点注意:
- 在Java语法机制内,String类已经对Object类中的toString方法进行过重写,使得输出类中的属性。
- Date类,也重写了toString方法,使得输出值为类中的属性
- 原文章:https://blog.csdn.net/weixin_46351306/article/details/112101327