最近看高老師影片時(shí)發(fā)現(xiàn)一個(gè)知識點(diǎn)不太理解,程式碼如下:
public class Test065 {
public static void main(String[] args){
Date d = new Date();//得到當(dāng)前時(shí)間的毫秒數(shù)
System.out.println(d);
Dog a = new Dog();
System.out.println(a);
}
}
class Dog{
int age;
}
輸出結(jié)果如下:
Thu Jun 15 19:43:29 CST 2017
com.test065.Dog@33909752
同樣是列印一個(gè)對象,為什麼Date類別物件就是輸出當(dāng)前時(shí)間,而自建對象就是輸出雜湊碼呢?
小萌新求各位朋友解惑,非常感想!
Println方法會呼叫輸出物件的toString方法,如果物件沒有定義toString方法,就依照繼承鏈往父類別找。
Date有定義toString方法,所以輸出的是格式化的屬性資訊。
自訂的Dog類別沒有toString方法,所以用的父類別的toString方法,也就是Object的
列印一個(gè)物件的時(shí)候,會列印出它的toString方法的回傳值,Date重寫了toString方法。 Dog沒有重寫toString則會呼叫父類別Object的toString方法
Date類別重寫了Object父類別中的toString(),你自己的類別沒有啊。 。 。看下Date類別的源碼