zoukankan      html  css  js  c++  java
  • 向上转型,向下转型

      有两个类, 父类 Father, 子类 Son

    向上转型

      把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转换

      父类引用 f1 指向 子类对象

    Father f1 = new Son();

    向下转型

       当用父类变量指向子类类型的时候,变量只有父类的方法而不能调用子类的方法,若想调用子类的方法就要把父类变量转换为子类变量(向下转型)

       把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转换   

      f1 指向 Son对象,f1 前面的(Son)必须加上,进行强制转换。这里向下转型是安全的 a1 指向的是子类对象

    Father f1 = new Son();
    Son s1 = (Son)f1;

      不安全的向下转型,编译无错但会运行会出错

      当父类变量转换为一个与真实对象不相符的子类变量的时候,就会抛出ClassCastException,所以向下转型是不安全的,

      正确的做法是在强制类型转换之前先使用 Instance of关键字进行判断转型后的类型和真实对象的类型是否一致,一致才执行类型转换操作;

    Father a2=new Son();
    Son c=(Son)a2;

      运行出错

    Exception in thread "main" java.lang.ClassCastException:

      

  • 相关阅读:
    spring-boot-swagger2 使用手册
    mall整合Swagger-UI实现在线API文档
    MyBatis Generator 详解
    1046 划拳 (15分)
    1043 输出PATest (20分)
    1042 字符统计 (20分)
    1041 考试座位号 (15分)
    1040 有几个PAT (25分)
    1039 到底买不买 (20分)
    1038 统计同成绩学生 (20分)
  • 原文地址:https://www.cnblogs.com/Jomini/p/13872904.html
Copyright © 2011-2022 走看看