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泛型编程时使用较多
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容