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:

      

  • 相关阅读:
    ubuntu 16.04 tmux
    ubuntu 16.04 samba 文件共享
    ubuntu 16.04 有道词典
    ubuntu bless 16字节每行
    Win7任务栏图标大小调整为等宽
    ubuntu 16.04 vnc server
    ubuntu 16.04 U盘多媒体不自动弹出
    Linux录屏软件
    通过apt-get安装nvidia驱动
    调试X Server
  • 原文地址:https://www.cnblogs.com/Jomini/p/13872904.html
Copyright © 2011-2022 走看看