Java中,对象类型转换分为向上转型和向下转型两种
1. 向上转型
子类对象到父类对象的类型转换,通常由系统自动完成。只需将子类对象赋值给父类对象的引用,系统就可以自动完成转换。
Animal animal=new Cat();//Animal类是Cat类的父类
- *子类对象向上转型为父类对象后,不能再通过父类对象的引用来访问子类中新增的属性和方法,但可以访问子类覆写父类的属性和方法。
2. 向下转型
父类对象到子类对象的类型转换,这种转换通常会出错,只有那些通过子类对象创建的父类对象才可以向下转型为子类对象
Animal animal=new Cat();//向上转型
Cat cat=(Cat) animal;//父类对象向下转型为子类对象
由于向下转型容易出错,在进行向下转型时,应尽量使用instanceof判断要转换的父类对象是否为子类对象实例
Animal animal=new Cat();
if(animal instanceof Cat){
Cat cat=(Cat) animal;
}
总结
- 向上转型直接赋值既可,而向下转型必然伴随着向上转型
- 向上转型提高了代码可拓展性,减少了重复代码的工作量
- 向下转型弥补了向上转型时丢失的子类的特有属性和方法,Java泛型编程时使用较多