Object類中的tostring方法的:
當我們輸出一個對象時,實際是輸出的是這個類中的tostring方法,是一個位址值,而不是類中的屬性。
一:子類沒有重寫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;
}
}
}
輸出結果
polymorphism.A1@28a418fc //輸出的是對象的位址值,而非屬性
二:在子類中重寫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+"]";
}
}}
輸出結果:
12 chentao //輸出的是類中的屬性
關鍵點注意:
- 在Java文法機制内,String類已經對Object類中的toString方法進行過重寫,使得輸出類中的屬性。
- Date類,也重寫了toString方法,使得輸出值為類中的屬性