• 19_多态及引用类型的转化


    多态:

      多态是继封装、继承之后,Java面向对象中的第三个特性
      同一行为,通过不同的事物,可以体现出不同的形态。多态,描述的就是这样的状态

    定义:

      是指同一行为(方法),具有多个不同的表现形式

    多态的前提:

      1.继承或者实现【二选其一】
      2.方法的重写[意义提现:【不重写,无意义】
      3.父类引用指向子类对象【格式提现】

    多态的体现:

      格式:(类型转换 父类的转子类)
      父类类型 变量名 = new 子类类型();
        变量名.方法名();

    父类类型:指子类对象继承的父类类型,或者实现的父接口类型。

      如:
                        Fu  fu  =  new  Zi();
                        fh.method();

    备注:当你在使用多态的时候,程序会首先检查父类中是否含有该方法,
    如果没有,择编译错误; 如果有,执行的是子类重写之后的方法。

    多态的好处:

       在程序开发过程中,父类类型一般作为方法形式参数,传递子类对象给方法,
    当你进行方法的调用,更能体现出多态的扩展性和便利性。
      总结:由于多态特性的支持,不仅仅是替代,在扩展性方面,无论之后再出现多少个字类,
      我们不需要再重复的定义showXxxEat()方法,直接使用showAnimalEat()方法。
      所以多态的好处,体现在可以使程序编写更简单,并且有良好的扩展性。

    引用类型的转化

      引用类型就好比多态中的父类引用指向子类就是

        多态的转型为:向上转型和向下转型

      向上转型:   

            多态本身是子类类型向上转换的过程,这个过程是默认的。
            当父类引用指向一个子类对象的时候,便是向上转型。

      格式:

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

      向下转型:  

            父类类型向子类类型向下转换的过程,这个过程是强制的。一个已经向上转型的子类对象,将父类引用转换为子类引用,可以使用强制类型转换格式,便是向下转型。

      格式:    

      

                        子类类型   变量名  =  (子类类型)父类变量名;
                         如  Cat  cat  = (Cat)  animal;    

    为什么要转型?

      当使用多态方式调用方法时,首先会检查父类中是否含有该方法,如果没有,则编译错误,进一步说,不能直接调用子类拥有而父类没有的方法。所以,想要调用子类特有的方法,必须向下转型。

    转型的异常:  

      两个类型没有任何继承关系,不符合类型转换的定义。为了避免ClassCastException的发生,Java提供了instanceof关键字,给引用变量做类型校验。

    格式:  

              变量名   instanceof   数据类型
                    先拿变量名与数据类型判断
                    如果变量名属于该类型数据   返回true
                    如果变量名不属于该数据类型  返回false
  • 相关阅读:
    js中return 、return false 、return true、break、continue区别
    小程序mpvue下多层次的数据值改变但是页面不动态渲染
    Thinkpad T470p Clover and opencore 吃黑苹果 Catalina 10.15.5
    3dTiles 数据规范详解[4.5] *一个被废弃的非正式瓦片规范
    3dTiles 数据规范详解[4.4] cmpt瓦片二进制数据文件结构
    3dTiles 数据规范详解[4.3] pnts瓦片二进制数据文件结构
    3dTiles 数据规范详解[4.2] i3dm瓦片二进制数据文件结构
    记一次Windows MinGW g++编译c++代码
    3dTiles 数据规范详解[4.1] b3dm瓦片二进制数据文件结构
    3dTiles 数据规范详解[3] 内嵌在瓦片文件中的两大数据表
  • 原文地址:https://www.cnblogs.com/rosiness/p/13928717.html
Copyright © 2020-2023  润新知