作者tkcn (小安)
看板java
标题Re: [问题] 自订类别继承Object的问题
时间Thu Jun 1 19:42:10 2006
※ 引述《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