PG_one
2017-09-30 00:03
package chapter4;
public class Initail02 {
public static void main(String[] args) {
Dog02 dog=new Dog02();
Animal02 animal=dog; //自动类型提升 向上类型转换
Dog02 dog2=(Dog)animal;//向下类型转换 强制类型转换
Cat cat=animal;
}
}
最好这么写:
if(animal instanceof Cat){
Cat cat=(Cat)animal;
}else{
System.out.println("Cat类未继承Animal父类或者未重写Animal父类属性");
}
Dog02 dog2=(Dog02)animal;Cat cat=(Cat)animal;两处错误
Cat cat=animal,两个错误:
首先是语法错误,向下类型转换用强制类型转换应该是Cat cat=(cat)animal;
二是向下类型转换有风险,Animal02 animal=dog;对象animal已经和dog同型,是Dog02类型,即使再强制转换,语法没有错误,编译的时候不会报错,但运行的时候会报错,因为Cat类型和Dog02类型不同型,无法强制转换。
Java入门第二季 升级版
530653 学习 · 6091 问题
相似问题