請問這哪里出問題了
package chapter4;
public class Initail02 {
public static void main(String[] args) {?
? Dog02 dog=new Dog02();
? Animal02 animal=dog; //自動(dòng)類型提升 向上類型轉(zhuǎn)換
? Dog02 dog2=(Dog)animal;//向下類型轉(zhuǎn)換 強(qiáng)制類型轉(zhuǎn)換
? Cat cat=animal;
}
}
2018-03-13
最好這么寫:
if(animal instanceof Cat){
?? Cat cat=(Cat)animal;
}else{
????System.out.println("Cat類未繼承Animal父類或者未重寫Animal父類屬性");
}
2018-03-13
Dog02 dog2=(Dog02)animal;Cat cat=(Cat)animal;兩處錯(cuò)誤
2017-09-30
Cat cat=animal,兩個(gè)錯(cuò)誤:
首先是語法錯(cuò)誤,向下類型轉(zhuǎn)換用強(qiáng)制類型轉(zhuǎn)換應(yīng)該是Cat cat=(cat)animal;
二是向下類型轉(zhuǎn)換有風(fēng)險(xiǎn),Animal02 animal=dog;對象animal已經(jīng)和dog同型,是Dog02類型,即使再強(qiáng)制轉(zhuǎn)換,語法沒有錯(cuò)誤,編譯的時(shí)候不會(huì)報(bào)錯(cuò),但運(yùn)行的時(shí)候會(huì)報(bào)錯(cuò),因?yàn)镃at類型和Dog02類型不同型,無法強(qiáng)制轉(zhuǎn)換。