1、向上类型转换(隐士/自动类型转换),是小类型到大类型的转换 ( 无风险 )
2、向下类型转换(强制类型转换)是大类型到小类型 (有风险)
3、类型转化存在风险,instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题
例:
①自动类型提升,向上类型转换
创建一个子类对象Dog dog = new Dog();
Animal animal = dog;
②向下类型转换,强制类型转换
Dog dog2 = (Dog)animal;
Cat cat = (Cat)animal;//此时编译会报错,因为此时的animal对象指向的是dog,而dog不是cat
此时我们应该使用instanceof(用来判断一个引用是否是某个类型或者某个类型的子类型)
if(animal instanceof Cat){
Dog dog2 = (Dog)animal;
}else{
System.out.println("无法进行类型转换");
}
温馨提示:如果开发中要进行类型转换,建议使用instanceof,以保证转换的安全性。