亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于equals( )方法重寫的疑問?

重寫equals( )方法時,

if (getClass() != obj.getClass())

return false;

執行完后,已經保證了原有對象和傳入對象obj的類型相同,

為什么后面仍要執行

Dog other = (Dog) obj;

將傳入對象obj轉化為原有對象的Dog類型?

不可以這樣寫嗎?如下:

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

if (age !=?obj.age)

return false;

return true;

}


正在回答

1 回答

Object類是所有類的父類,跟Dog類不是同一類型的。需要向下轉型成Dog類,這樣才能比較。

1 回復 有任何疑惑可以回復我~
#1

幕布斯9297580 提問者

雖然不確定是否正確,但感覺這個回答邏輯上完全說得通,非常感謝!
2018-08-31 回復 有任何疑惑可以回復我~
#2

忘記過去丶

在判斷完類對象屬性名相同后,我們要比較屬性值。之前我們用的一直是object類的類型進行的比較。而在我們繼續判斷dog類的屬性值時,如果用object類型,那就沒辦法進行“值”的比較了。所以,應該也轉換成dog類型,這樣才能進行比較。可能說的不如1樓簡潔,希望能夠方便你的理解。
2018-10-06 回復 有任何疑惑可以回復我~
#3

weixin_慕仰7456056 回復 忘記過去丶

老師,我還是不明白,調用equals()時,傳入的不就是Dog類嗎,為什么變成了object類了
2019-08-04 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于equals( )方法重寫的疑問?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號