多态:java中核心知识点

 

1.多态的概念

  • 什么是多态?

    一个事物在不同条件下呈现的不同状态

    java中多态:

    父类型引用指向子类型对象这种机制,导致程序存在编译阶段绑定和运行阶段绑定两种不同的状态,这种机制可以称之为多态语法机制。

  • 为什么使用多态?

    提高程序的复用性,节省资源

  • 多态中涉及的概念

    1.向上转型

    子类型------->父类型

    又被称为:自动类型转换

    2.向下转型

    父类型---->子类型

    又被称为:强制类型转换【需要加强制转换符】

    3.注意!!

    不管是以上哪种转换类型,都需要有继承关系,如果没有继承关系,在编译阶段就过不去。(可以理解为,多态的使用,要在继承关系中进行)

2.多态的使用

      Cat是子类,Bird是子类 ,Cat和Bird之间没有任何关系。

       Animals是父类

       子类重写了父类的move()方法

       Cat.class类还有一个独有的getfish()方法。

*向上转型(自动转型)

       什么时候用向上转型?

       当调用的方法,父类中存在的时候,用向上转型。(多态一般)

       向上转型,只要编译通过了,运行一定不会出错。

   语法格式:

         父类 父类的引用=new 子类();

        编译看左边,运行看右边

Animals a1=new Cat();    //  new Cat创建的对象是Cat子类型的,a1是Animals父类型的引用,
                         //可见进行了类型转换,子类型转父类型。

a1.move();          //实际执行的是Cat中的move方法。

*向下转型(强制转型)

       1.什么时候需要用向下转型呢?

                当调用的方法是子类中特有的,父类中不存在的,用向下转型。

      2.语法:

          引用 instanceof 子类数据类型;

          子类数据类型 子类数据类型引用=(子类数据类型)父类数据类型引用

 Animals a1=new Cat();  
     Cat cc=(Cat)a1;   //把a1转换成Cat类型
      cc.getfish;  //调用Cat中特有的方法

    3.异常

            在进行向下转型的过程中,一不小心就出现java.lang.ClassCastException类型转换异常。(这个异常只在强制类型转换的时候出现,编译通过了,但是执行不通过)

           为了避免这种类型转换异常的发生,Java提供了instanceof关键字,给引用变量做类型的检验。

语法格式:
(引用 instanceof 数据类型)
运行结果是布尔类型
如果引用和数据类型相同,返回结果是true;
如果引用和数据类型不同,返回结果是false;

所以,我们在转换前,我们最好先进行引用变量的类型判断

Animals a1=new Cat();

     if(a1 instanceof Cat){    //先判断a1指向的对象是Cat类型

           Cat cc=(Cat)a1;    //然后把a1强制转换成Cat类型

            cc.getfish;    //调用Cat中特有的方法

            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值