public?class?TestPerson?{
public?static?void?main(String[]?args)?{
//?向上類型轉換,正常運行
Animal?a?=?new?Cat();
a.show();
//?向下類型轉換,正常運行
Animal?cat?=?new?Cat();
Cat?cat2?=?(Cat)?cat;
cat2.show();
//?運行時異常
Cat?cat3?=?(Cat)?new?Animal();
cat3.show();
//?正常運行
Cat?cat4?=?(Cat)?getAnimal(a);
cat4.show();
//?運行異常
Cat?cat5?=?(Cat)?getAnimal();
cat4.show();
}
public?static?Animal?getAnimal(Animal?a)?{
return?a;
}
public?static?Animal?getAnimal()?{
return?new?Animal();
}
}
class?Animal?{
public?void?show()?{
System.out.println("Animal");
}
}
class?Cat?extends?Animal?{
public?void?show()?{
System.out.println("Cat");
}
}我的疑惑是:明明都是強制轉換,為什么有的會報異常,有的卻可以正常進行?主要是異常的部分。注:我能理解向上類型轉換以及向下類型轉換正常運行的代碼,只是不理解那些異常的代碼。請大神講解,感激不盡
java中引用類型的強制轉換
qq_陽光下的海風_0
2016-09-08 19:45:41