看板 java 關於我們 聯絡資訊
※ 引述《chenchen142 ()》之銘言: : interface a{String toString();} : interface b{String m();} : class c{ : public static void main(String[] args){ : //實作toString()並印出 : System.out.println(new a(){public String toString(){return "a";}}); 這邊你sysout的是 new a類別(物件) 的 .toString() 但因為你override了此類別的toString方法並讓它return "a" 所以輸出就是a了 : //實作m()並印出 : System.out.println(new b(){public String m(){return "b";}}); 這邊你sysout的是 new b物件 的 .toString() 而你並沒有override toString() 所以 輸出的就是原本物件的hashcode囉(還是地址?這點還請強者解答) : //宣告一個bb, 實作m()並印出 : b bb = new b(){public String m(){return "b";}}; : System.out.println(bb.m()); 這邊就是sysout bb.m()的return值"b" : } : } : 結果輸出: : a : c$2@c17164 : b : 有一行印出奇怪的東西 : 為啥實作抽象方法如果不用toString()的話就要宣告一個變數起來 : 再呼叫才能正確顯示字串 : 還是我誤會什麼了 如果有說明不清的地方還請多多包涵:P -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.248.48.47
tkcn:API 上寫的很清楚 :) http://tinyurl.com/25el2fg 12/09 21:48
Apohades:Integer.toHexString(hashCode()) 12/09 21:53
Apohades:2個月前看不懂 現在總算看懂了orz 12/09 22:07