• java多态的向上转型与向下转型(与编译时类型与运行时类型有关)


    1.编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。

             当编译时类型和运行时类型不一致时,就会出现所谓的多态。

     因为子类是一个特殊的父类,因此java允许把一个子类对象直接赋给一个父类的引用变量,无需任何类型转换(向上转型)

     引用变量在编译阶段只能通过编译时类型所具有的方法,但运行时则执行它运行时类型所具有的方法。因此,编写java代码时,引用变量只能

    调用声明该变量时所用类里包含的方法。

     2.编写程序时,引用变量只能调用它编译时类型的方法,而不能调用运行时类型的方法,即使实际所引用的对象确实包含该方法。

             如果需要让这个引用变量调用它运行时类型的方法,也就是要把一个父类对象赋给子类对象时,则必须要把它强制类型转换成运行时类型。(向下转型)

          SubClass sb=(SubClass)ploymophicBc

      注意:引用类型之间的转换只能在有继承关系的两个类型之间进行。如果试图把一个父类实例转换成子类类型,则这个对象必须实际上是子类实例才行(即编译时类型为父类类型,而运行时类型为子类类型)

     使用instanceof运算符先进行判断是否可以成功转换,增强程序健壮性

  • 相关阅读:
    3D 立体动态图 代码:
    自由切换 网页上的 ico 图标
    ES6 基本语法:
    JavaScript中class类的介绍
    React_01_ECMAScript6
    使用JS计算前一天和后一天
    Web 前端学习计划
    read
    java对象实例化
    关于为什么java需要垃圾回收
  • 原文地址:https://www.cnblogs.com/wxw7blog/p/7052949.html
Copyright © 2020-2023  润新知