課程
/后端開發
/Java
/Java入門第二季 升級版
感覺怪怪的
2015-06-17
源自:Java入門第二季 升級版 9-9
正在回答
這是需要的,有些obj需要轉換類型的
lqg111
初級學習號 提問者
不可以省略.原因如下:
這里是重寫equals方法的吧.方法聲明如下
public?boolean?equals(Object?obj){}
這個方法中的參數列表里只有一個Object類引用數據類型的變量obj,obj可以保存Object對象和Object類子類對象的引用或者說地址值,這里用到了多態.多態的成員變量訪問特點:編譯時看父類,運行時還是看父類.由這個特點知道這里的obj只能訪問父類的成員變量,不能訪問傳入的子類的特有的屬性(成員變量),如果要訪問子類對象的成員變量必須通過強制類型轉換(向下轉型)將變量obj轉換為子類引用數據類型,根據你的例子,這里需要
Dog?other?=?(Dog)obj;//向下轉型
通過這個操作后,我們得到Dog類型的引用數據類型的變量other,它可以訪問Dog類中定義的成員變量.
總結一下,由于多態成員訪問特點導致obj不能直接訪問子類特有的成員變量,因此用向下轉型將obj變量強轉為子類類型,然后才可以直接訪問子類特有的成員變量.
Kiritomas
我也想了下,可能是這個原因。B extends A,但B和A的屬性(非屬性值)一樣,此時
this.getClass==obj.getClass()相等,但此時需要強制類型轉換
Dog d=(Dog)obj?
舉報
課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙
1 回答Dog d = (Dog) obj是什么意思?
1 回答Dog other=(Dog)obj??
3 回答Dog othr = (Dog) obj有什么用
3 回答一定要 Dog other = (Dog)obj;
1 回答為什么要有這個Dog other=(Dog)obj;
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-06-18
這是需要的,有些obj需要轉換類型的
2016-10-23
不可以省略.原因如下:
這里是重寫equals方法的吧.方法聲明如下
這個方法中的參數列表里只有一個Object類引用數據類型的變量obj,obj可以保存Object對象和Object類子類對象的引用或者說地址值,這里用到了多態.多態的成員變量訪問特點:編譯時看父類,運行時還是看父類.由這個特點知道這里的obj只能訪問父類的成員變量,不能訪問傳入的子類的特有的屬性(成員變量),如果要訪問子類對象的成員變量必須通過強制類型轉換(向下轉型)將變量obj轉換為子類引用數據類型,根據你的例子,這里需要
通過這個操作后,我們得到Dog類型的引用數據類型的變量other,它可以訪問Dog類中定義的成員變量.
總結一下,由于多態成員訪問特點導致obj不能直接訪問子類特有的成員變量,因此用向下轉型將obj變量強轉為子類類型,然后才可以直接訪問子類特有的成員變量.
2015-12-05
我也想了下,可能是這個原因。B extends A,但B和A的屬性(非屬性值)一樣,此時
this.getClass==obj.getClass()相等,但此時需要強制類型轉換
Dog d=(Dog)obj?