第2节 多态中的引用类型转换
1、向上类型转换(隐式/自动类型转换),是小类型到大类型的转换
Dog dog=new Dog();
Animal animal=dog;
2、向下类型转换(强制类型转换),是大类型到小类型的转换(有风险,易发生溢出)
Dog dog=new Dog();
Animal animal=dog;
Dog dog2=(Dog)animal;//加上括号里面进行强制转换
Cat cat=(Cat)animal;//这种是错误的,因为两个不同类型不可相互转换,1编译时Cat类型,2运行时Dog类型
3、instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题
将上述Animal 转换为Cat改为:
if(animal instanceof Cat) //判断animal包含Cat类
Cat cat=(Cat)animal;
else
System.out.println("animal不能强制转换为Cat");