Re: [問題] 自訂類別繼承Object的問題

看板java作者 (小安)時間19年前 (2006/06/01 19:33), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《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
文章代碼(AID): #14Vj27_v (java)
文章代碼(AID): #14Vj27_v (java)