強制類型轉換不能直接將父類對象轉換為子類對象嗎
在程序中,我將父類的對象強制轉換為子類的對象,為什么會報錯?既然是強制轉換,本來就是從大類型到小類型的轉換?????
package?com.imooc;
//學習多態
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();除了不能引用子類獨有的方法外,有區別嗎? ?Animal?animal?=?new?Dog();到底是怎樣的意思?
2016-05-25
任何時候,將父類對象強制轉換為子類對象,編譯都能通過。這句話對嗎?