zoukankan      html  css  js  c++  java
  • Java面向对象之多态

    多态的条件

    对象的多态性:父类的引用指向子类的对象
    可以直接应用在抽象类和接口上

    Java引用变量有两个类型: 编译时类型和 运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。简称:编译时,看左边;运行时,看右边。

    若编译时类型和运行时类型不一致 , 就出现了对象的多态性 (Polymorphism)
    “ 看左边 ” : 看的是父类的引用(父类中不具备子类特有的方法)
    “ 看右边 ” : 看的是子类的对象(实际运行的是子类重写父类的方法)

    多态的体现

    多态的弊端

    多态的转型分为向上转型与向下转型两种:

    向上转型:

    其实就是把子类类型的对象 赋值给 父类类型的引用,这个过程是自动转换的,类似基本数据类型的自动类型转换

    父类类型  变量名 = new 子类类型();
    如:Animal a = new Cat();

    向下转型:

    父类类型向子类类型向下转换的过程,这个过程是强制的,类似基本数据类型的强制类型转换

    子类类型 变量名 = (子类类型) 父类变量名;
    如:Cat c =(Cat) a;

    向下转型一旦没有注意,就会出现类型转换异常:ClassCastException,所以应该在转型之前先判断一下是否能转型

    instanceof关键字

    为了避免ClassCastException的发生,Java提供了 instanceof 关键字,给引用变量做类型的校验,格式如下:

    变量名 instanceof 数据类型 
    如果变量属于该数据类型,返回true。
    如果变量不属于该数据类型,返回false。

    对象类型转换 (Casting )

  • 相关阅读:
    altium designer 工程中的原理图库和封装如何提取出来
    555是集成电路
    安装JDK+Tomcat,进行环境变量设置,和运行JSP
    2018年房价会涨吗?
    MySQLroot密码的恢复方法
    mysql中的数据类型长度
    感觉还不错,受益很高,有保障
    phpstorm问题
    Mac上的抓包工具Charles
    解决Firefox显示“已阻止载入混合活动内容”的方法
  • 原文地址:https://www.cnblogs.com/deityjian/p/11409598.html
Copyright © 2011-2022 走看看