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