类型转换有2种:
大类型向小类型转换。 自动转换
小类型向大类型转换。 强制转换,需要手动,且容易出错,所以需要验证
验证两个对象是否能转换
package Animal;
public class Animal {
}
package Animal;
public class Cat extends Animal {
}
package Animal;
public class Dog extends Animal {
}
package Animal;
public class run {
public static void main(String[] args) {
Dog dog = new Dog(); // 子类对象子类引用
Animal animal = dog; // 小类型转换为大类型,自动转换
Dog dog1 = (Dog) animal; // 大类型转换为小类型强制转换
Cat cat = (Cat) animal; //大类型转换为小类型,运行结果报错,程序运行时无法转换。
}
}
instanceof 语句进行判断
package Animal;
public class run {
public static void main(String[] args) {
Dog dog = new Dog(); // 子类对象子类引用
Animal animal = dog; // 小类型转换为大类型,自动转换
if(animal instanceof Dog) { //判断能否转换
Dog dog1 = (Dog) animal; // 大类型转换为小类型强制转换
}
else{
System.out.println("animal无法转换为Dog型");
}
if(animal instanceof Cat) { //判断能否转换
Cat cat = (Cat) animal; //大类型转换为小类型,运行结果报错,程序运行时无法转换。
}
else{
System.out.println("animal无法转换为Cat型");
}
}
}
运行结果:
animal无法转换为Cat型