zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    从底层来看Promise
    Promise初探
    时间复杂度和空间复杂度
    IDEA maven Run Maven 启动方式
    IDEA 运行maven工程报错:No goals have been specified for this build.....解决办法
    12.外键约束
    11.约束的概念及分类
    10.创建表-备注与创建表的细节说明。
    9.创建表-自增长(AUTO_INCREAMENT)
    8.创建表--主键的概念与应用
  • 原文地址:https://www.cnblogs.com/rosiness/p/13928717.html
Copyright © 2011-2022 走看看