对象的向上转型、向下转型

其实就是多态写法

1、向上转型,也就是创建一个子类对象,把他当做父类来看待,向上转型一定是安全的,但是一旦向上转型为父类对象,就不能调用子类原本特有的方法

父类引用指向子类对象

Parent p = new Children();

Animal a = new Dog();// 这个a不能调用Dog类特有的狗吃屎方法

2、向下转型,其实是一个还原的动作,也就是将父类对象还原为本来的子类对象

格式:

子类名称 对象名 = (子类名称)父类对象;

Animal animal = new Dog();// a dog
Dog dog = (Dog)animal;// 向下转型为原来的狗

// Cat cat = (Cat)animal;
// 这是错误写法
//本来人家是狗,向上转型为动物,你要强制把人家先下转型为猫,就会报错(类转换异常java.lang.classcastexpction),应该是一个还原的过程

3.如何知道一个父类的引用原来是什么子类,这样才可以安全的向下转型

if(animal instanceof Dog) {// 如果animal本来是一只狗(Dog类)
    Dog dog = (Dog)animal;
}
if(animal instanceof Cat) {// 如果animal本来是一只猫(Cat类)
    Cat cat = (Cat)animal;
}
原文地址:https://www.cnblogs.com/zhuobo/p/10611874.html