強制類型轉換不能直接將父類對象轉換為子類對象嗎
在程序中,我將父類的對象強制轉換為子類的對象,為什么會報錯?既然是強制轉換,本來就是從大類型到小類型的轉換?????
package?com.imooc; //學習多態(tài) public?class?Initial?{ public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub Dog?dog?=?new?Dog(); Animal?animal?=?dog;//自動類型提升?向上類型轉換 Animal?animal2?=?new?Animal(); Dog?dog2?=?(Dog)animal2;//向下類型轉換?強制類型轉換 // Cat?cat?=?(Cat)animal; } } 運行結果: Exception?in?thread?"main"?java.lang.ClassCastException:?com.imooc.Animal?cannot?be?cast?to?com.imooc.Dog at?com.imooc.Initial.main(Initial.java:22)
2015-03-02
不是你這個意思的,它原來是一只動物,你沒說它是什么動物就強行轉換成一只狗可以么?不可以!
但是 ?如果 它原來就是一只狗的話
Animal?animal?=?new?Dog();
Dog?dog2?=?(Dog)animal;
這樣就不會報錯了。
2017-04-16
Animal?animal?=?new?Dog();和?Dog animal?=?new?Dog();除了不能引用子類獨有的方法外,有區(qū)別嗎? ?Animal?animal?=?new?Dog();到底是怎樣的意思?
2016-05-25
任何時候,將父類對象強制轉換為子類對象,編譯都能通過。這句話對嗎?