課程
/后端開發
/Java
/Java入門第二季 升級版
是不是因為在他之上有?Dog dog2=(Dog)animal;這一句,已經把animal轉成了Dog類型,所以運行時是按照Dog類型?
2015-03-02
源自:Java入門第二季 升級版 10-2
正在回答
有解答么。。。
在繼承中,子類向父類轉換稱為“向上轉型”,將父類向子類轉換稱為“向下轉型”。很多時候,我們會將變量定義為父類的類型,卻引用子類的對象,這個過程就是向上轉型。程序運行時通過動態綁定來實現對子類方法的調用,也就是多態性。然而有些時候為了完成某些父類沒有的功能,我們需要將向上轉型后的子類對象再轉成子類,調用子類的方法,這就是向下轉型。注意:不能直接將父類的對象強制轉換為子類類型,只能將向上轉型后的子類對象再次轉換為子類類型。也就是說,子類對象必須向上轉型后,才能再向下轉型。
因為向下轉型存在風險,所以在接收到父類的一個引用時,請務必使用 instanceof 運算符來判斷該對象是否是你所要的。
?Dog?dog2=(Dog)animal
這里你已經強制轉換了,可以能存在風險,但是編譯可以通過,運行時可能會出現問題,建議使用instanceof判斷。
舉報
課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙
1 回答為什么編譯時是Cat類型,運行時就變成了Dog類型呢?
6 回答Animal animal = dog 執行后 animal 是基于哪個類型的?為什么 Cat cat = (Cat) animal; 執行后回事false呢?
11 回答為什么Cat類型不能轉換成Animal類型?為什么說animal不含cat類型的元素?可是cat不是animal的子類,繼承了animal的所有屬性和方法嗎?
1 回答Dog類Cat類還有Animal類,這個類指的是什么?
4 回答本節例題中animal可以強制轉換成Dog類,為什么不能強制轉換成Cat類?Cat類和Dog類都是Animal類的子類啊。
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-03-07
有解答么。。。
2015-03-03
在繼承中,子類向父類轉換稱為“向上轉型”,將父類向子類轉換稱為“向下轉型”。
很多時候,我們會將變量定義為父類的類型,卻引用子類的對象,這個過程就是向上轉型。程序運行時通過動態綁定來實現對子類方法的調用,也就是多態性。
然而有些時候為了完成某些父類沒有的功能,我們需要將向上轉型后的子類對象再轉成子類,調用子類的方法,這就是向下轉型。
注意:不能直接將父類的對象強制轉換為子類類型,只能將向上轉型后的子類對象再次轉換為子類類型。也就是說,子類對象必須向上轉型后,才能再向下轉型。
因為向下轉型存在風險,所以在接收到父類的一個引用時,請務必使用 instanceof 運算符來判斷該對象是否是你所要的。
這里你已經強制轉換了,可以能存在風險,但是編譯可以通過,運行時可能會出現問題,建議使用instanceof判斷。