01 对象的向上转型
对象的向上转型,其实就是多态写法:
格式:父类名称 对象名 = new 子类名称(); Animal animal = new Cat();
含义:右侧创建了一个子类对象,把它当做父类来看待使用。 创建了一只猫,当做动物看待,没问题。
注意事项:向上转型一定是安全的。从小范围转向了大范围,从小范围的猫,向上转换成为更大范围的动物。
类似于:
double num = 100; // 正确,int -->double,自动类型转换
02 对象的向下转型
对象的向下转型,其实是一个【还原】的动作。
格式:子类名称 对象名 = (子类名称) 父类对象;
含义:将父类对象:【还原】成为本来的子类对象。
Animal aniaml = new Cat(); // 本来是猫,向上转型成为动物
Cat cat = (Cat) animal; // 本来是猫,已经被当做动物了,还原回来成为本来的猫
注意事项:
a.必须保证对象本来创建的时候,就是猫,才能向下转型成为猫。
b.如果对象创建的时候本来不是猫,现在非要向下转型成为猫,就会报错。ClassCastException
类似于: int num = (int) 10.0; // 可以 int num = (int) 10.5; // 不可以,精度损失