2018-05-04 Java向上转型和向下转型

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泛型编程时使用较多

你可能感兴趣的:(2018-05-04 Java向上转型和向下转型)