第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

老師說這個是判斷兩個對象類型是否相等,可是兩個類型不是不一樣么?老師說一樣,一樣的話后面怎么還要轉換類型

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

????????????return?false;

//將傳入的對象強制轉換為當前對象

????????Dog?other?=?(Dog)?obj;


正在回答

2 回答

這條語句就是判斷這2個對象的類的類型是否一樣的。getClass()是this對象的類的類型,就是調用這個方法的對象。

obj.getClass()是參數傳遞過來的對象的類的類型,就是你要比較目標的類的類型。

舉個例子吧:

還是Dog這個類,你重寫了equals方法。重寫的目的是當使用blackDog對象的時候,你發(fā)現還有一個叫whiteDog的對象,你想比較他倆是否相等。如果不重寫equals方法,只能他倆的地址值相同,但實際上你想比較的是名字、性別、品種什么的是否相同。那當你使用這句boolean flag=blackDog.equals(whiteDog);的時候,"if (getClass() != obj.getClass())" 這里第一個getClass()就是blackDog調用的,obj.getClass就是 whiteDog調用的。

(Dog blackDog=new Dog();whiteDog不是你創(chuàng)建的,所以你不清楚他是什么類)

class Dog{

?? public boolean equals(object obj){

? }

}

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

qq__878 提問者

非常感謝!
2015-08-03 回復 有任何疑惑可以回復我~
#2

comeonusa1 回復 qq__878 提問者

我還是沒明白,你給講講。。whitedog不是我創(chuàng)建的,前面都已經證明他們是一個類了啊。為什么還要強制轉換
2015-08-07 回復 有任何疑惑可以回復我~
#3

comeonusa1

雖然我不清楚white dog是什么類,但是系統(tǒng)可以判斷啊。
2015-08-07 回復 有任何疑惑可以回復我~
#4

末日黑龍 回復 comeonusa1

你好!我在另一個帖子相似內容做了回復,你看看能否有幫助。 http://idcbgp.cn/qadetail/89561
2015-08-10 回復 有任何疑惑可以回復我~
#5

末日黑龍 回復 comeonusa1

比如我的dog類是這樣寫的class Dog{public void eat(){}},就是只有一個eat的方法。但是我創(chuàng)建對象的時候,我是用Object whiteDog=new Dog();這樣寫沒錯吧,這個whiteDog對java來說是Object類型,但我們知道它實際構造的是Dog的對象。如果我們想用whiteDog的eat()方法,直接寫whiteDog.eat()是不行的,因為Object沒有eat()方法。所以我們做一下轉換(Dog)whiteDog.eat()就可以了。
2015-08-10 回復 有任何疑惑可以回復我~
查看2條回復

比如說Dog類里面有name這個屬性吧。

傳遞進來的是Object類的對象吧,Object對象可是沒有name這個屬性的,那該怎么比較呢?所以首先要判斷類是否一樣,如果都是Dog了,那就都有name屬性了,但傳遞進來的是Object對象,想調用的話不強轉是不能調用的。
0 回復 有任何疑惑可以回復我~
#1

qq__878 提問者

if (getClass() != obj.getClass()) return false; 這個是用來判斷類型一樣的么?判斷的是哪兩個的類型呢?
2015-07-30 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

老師說這個是判斷兩個對象類型是否相等,可是兩個類型不是不一樣么?老師說一樣,一樣的話后面怎么還要轉換類型

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

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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