課程
/后端開發
/Java
/Java入門第二季 升級版
運行到Dog other = (Dog) obj ;這里,老師說“運行到這里,顯然兩個對象的類型是相同的,那么我們把另一個對象再傳換成Dog類型”既然已經是類型相同的,為什么還要轉換成Dog類型呢?
2015-09-27
源自:Java入門第二季 升級版 9-9
正在回答
if?(getClass()?!=?obj.getClass())
????????????return?false;
????????Dog?other?=?(Dog)?obj;
這句話,能執行到Dog?other?=?(Dog)?obj;
就說明this.getClass()==obj.getClass,說明obj也是Dog類對象,只不過是用Object類的引用指向了這個對象,所以下面要把obj的類型給向下轉換 然后繼續下面的比較 來比較Dog類特有的內容
JustV 提問者
順便說下 我也很喜歡一拳超人 哈哈!
沒看出來是哪里做了類型提升啊。。。還望指教~
@Override public?boolean?equals(Object?obj)?{ if?(this?==?obj) return?true; if?(obj?==?null) return?false; if?(getClass()?!=?obj.getClass()) return?false; Dog?other?=?(Dog)?obj; if?(age?!=?other.age) return?false; return?true; }
一開始時使用父類引用指向的子類對象,雖然是子類的對象但是在定義 時把子類對象做了類型提升,提升成了父類,當你需要用到這個對象中的子類內容時,就需要把類型給調回來
舉報
課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙
2 回答關于重寫equals()方法后想重新調用父類的equals()方法的問題
1 回答關于equals( )方法重寫的疑問?
4 回答關于重寫equals()方法的疑問
1 回答無法生成重寫的equals()方法
5 回答為什么我重寫equals方法時有問題?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-09-29
if?(getClass()?!=?obj.getClass())
????????????return?false;
????????Dog?other?=?(Dog)?obj;
這句話,能執行到Dog?other?=?(Dog)?obj;
就說明this.getClass()==obj.getClass,說明obj也是Dog類對象,只不過是用Object類的引用指向了這個對象,所以下面要把obj的類型給向下轉換 然后繼續下面的比較 來比較Dog類特有的內容
2015-09-29
順便說下 我也很喜歡一拳超人 哈哈!
2015-09-29
沒看出來是哪里做了類型提升啊。。。還望指教~
2015-09-27
一開始時使用父類引用指向的子類對象,雖然是子類的對象但是在定義 時把子類對象做了類型提升,提升成了父類,當你需要用到這個對象中的子類內容時,就需要把類型給調回來