Re: [問題] 新手問abstract method
※ 引述《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
→
12/09 21:48, , 1F
12/09 21:48, 1F
→
12/09 21:53, , 2F
12/09 21:53, 2F
→
12/09 22:07, , 3F
12/09 22:07, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):