強(qiáng)制類型轉(zhuǎn)換不能直接將父類對(duì)象轉(zhuǎn)換為子類對(duì)象嗎
在程序中,我將父類的對(duì)象強(qiáng)制轉(zhuǎn)換為子類的對(duì)象,為什么會(huì)報(bào)錯(cuò)?既然是強(qiáng)制轉(zhuǎn)換,本來(lái)就是從大類型到小類型的轉(zhuǎn)換啊???
package?com.imooc; //學(xué)習(xí)多態(tài) public?class?Initial?{ public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub Dog?dog?=?new?Dog(); Animal?animal?=?dog;//自動(dòng)類型提升?向上類型轉(zhuǎn)換 Animal?animal2?=?new?Animal(); Dog?dog2?=?(Dog)animal2;//向下類型轉(zhuǎn)換?強(qiáng)制類型轉(zhuǎn)換 // Cat?cat?=?(Cat)animal; } } 運(yùn)行結(jié)果: 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
不是你這個(gè)意思的,它原來(lái)是一只動(dòng)物,你沒(méi)說(shuō)它是什么動(dòng)物就強(qiáng)行轉(zhuǎn)換成一只狗可以么?不可以!
但是 ?如果 它原來(lái)就是一只狗的話
Animal?animal?=?new?Dog();
Dog?dog2?=?(Dog)animal;
這樣就不會(huì)報(bào)錯(cuò)了。
2017-04-16
Animal?animal?=?new?Dog();和?Dog animal?=?new?Dog();除了不能引用子類獨(dú)有的方法外,有區(qū)別嗎? ?Animal?animal?=?new?Dog();到底是怎樣的意思?
2016-05-25
任何時(shí)候,將父類對(duì)象強(qiáng)制轉(zhuǎn)換為子類對(duì)象,編譯都能通過(guò)。這句話對(duì)嗎?