Re: [問題] 自訂類別繼承Object的問題
※ 引述《Egriawei (斷背山狼與羊)》之銘言:
: : 但是問題來了
: : 當我 Ball b1 = new Ball(18.4, "red ball");
: : Ball b2 = new Ball(18.4, "red ball");
: : 然後 System.out.println(b1 == b2); <-- 這個false我能理解 畢竟兩個不同物件
: : System.out.println(b1.equals(b2)); <-- 這個false我就不能理解了
: : 它不是比較這兩個物件的內容是否相同嗎?
: : 這個問題請教版上先進 感謝
: 難到String有特別覆蓋過?
講 override 應該會比較正式一點
事實上,String 的確 override equals() 以及 hashCode() 這兩個 method
這裡順便回前一位板友,
你所撰寫的 Ball 由於沒有 override equals() 這 method
所以當呼叫 b1.equals(b2) 時,事實上是執行了 Object 所提供的 method
如果你希望比對兩個 Ball 物件的內容(指物件內的變數)是否相同
必須自己寫一個 method 去 override Object 所提供的 equals()
題外話,在 override equals() 之後,最好也同時去 override hashCode()
否則在一些會使用 hash 的 Collection 時,將會產生錯誤。
(當然,在目前的這個例子裡頭是無關緊要啦)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.131.71.246
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章