課程
/后端開發
/Java
/Java入門第二季 升級版
之所以強制轉換可能會導致程序無法運行的原因是,子類與父類的對象類型不一致,一個是cat,一個是dog,那我們是怎么知道父類是dog的?如何判斷。(人為判斷,不是使用instanceof)!
2015-08-25
源自:Java入門第二季 升級版 10-2
正在回答
看看引用的改變:
????如Animal a = new Dog();//此時將Dog類給Animal的引用a
????????Dog d = (Dog)a;//將a的引用強制轉為Dog類型,賦給Dog引用。
????????a = new Cat();//此時將Cat類給Animal的引用a
????????Dog dog = (Cat)a;//強制將Cat的引用a給Dog類的引用dog。(編譯不會報錯,但是Cat類和Dog類之間沒聯系,因此運行時會出現報錯:ClassCastExcepting)。
從右往左讀就好;類似于看賦值語句,,只是這里給的是引用
人為判斷。。。,看看源碼不就完了,不知道你想說什么
亂步 提問者
舉報
課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙
4 回答強制類型轉換不能直接將父類對象轉換為子類對象嗎
1 回答父類引用指向子類對象。
2 回答判斷兩個對象類型是否相同?用 obj instanceof Dog 可以么?
2 回答關于父類創建對象引用子類
2 回答對象數組的類型
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-11-07
看看引用的改變:
????如Animal a = new Dog();//此時將Dog類給Animal的引用a
????????Dog d = (Dog)a;//將a的引用強制轉為Dog類型,賦給Dog引用。
????????a = new Cat();//此時將Cat類給Animal的引用a
????????Dog dog = (Cat)a;//強制將Cat的引用a給Dog類的引用dog。(編譯不會報錯,但是Cat類和Dog類之間沒聯系,因此運行時會出現報錯:ClassCastExcepting)。
從右往左讀就好;類似于看賦值語句,,只是這里給的是引用
2015-08-25
人為判斷。。。,看看源碼不就完了,不知道你想說什么