欢迎光临
我们一直在努力

《初学JavaSE》第五讲:多态

一、多态

1.多态的基本概念

通俗来说,就是多种形态。在Java中,如果要深入了解多态的概念,就要从多态的实现条件来展开

1.1 多态的实现条件

在Java中要实现多态,必须满足以下几个条件(缺一不可)

  • 必须在继承体系下
  • 子类必须对父类中方法进行重写
  • 通过父类的引用调用重写的方法
    多态体现:在代码运行时,当传递不同类对象时,会调用对应类中的办法
  • 2.重写

    重写(也称为覆盖)简单来说, 子类对父类的方法重新编写,达到子类可以自己特定于自己的行为
    如:任何动物都会吃饭,但有的动物吃的不一样,像狗吃的是狗粮,如图:狗对于动物的重写
    在这里插入图片描述

    2.1 方法重写的规则

    (1)重写时,必须与父类原型一致:方法名、参数列表
    (2)重写时,返回值类型可以不同,但返回值类型必须是具有父子关系的,如果不具有,返回值类型必须相同

    在这里插入图片描述

    (3)重写时,子类与父类对访问限定符的要求

    子类的访问限定符的权限要大于等于父类 的权限

    如图:描述访问限定符的权限

    num使用的权限范围publicprotecteddefault(默认)private
    1 同一包中同一类 ✅️ ✅️ ✅️ ✅️
    2 同一包中的不同类 ✅️ ✅️ ✅️
    3 不同包中的子类 ✅️ ✅️
    4 不同包中的非子类 ✅️

    在这里插入图片描述

    (4)父类的方法如果被static、final、private 修饰,则子类不能构成重写

    父类被static修饰的方法,则不会产生特定的对象,是所有对象共享的,则不会有自己特定的行为;父类被final修饰的方法直接被锁定了,无法被子类重写;父类被private修饰的方法,只能在该类中使用,也无法完成重写

    (5)父类如果是构造方法 ,子类同样不能构成重写

    如果父类是构造方法,那么一定先会执行父类的构造方法,然后在执行子类自己定义的方法,因此就无法产生子类特定的行为

    2.2 利用编译器实现重写

    在这里插入图片描述

    3.向上转型(实现父类的引用)

    向上转型是父类引用,引用了子类对象 ,转的是两个类型,相当于是从小类型转到大类型,不会发生强转

    3.1 向上转型的方式

    (1)直接赋值

    在这里插入图片描述

    (2)方法参数的传递

    在这里插入图片描述

    (3)方法的返回值

    在这里插入图片描述

    3.2 转型的父类对成员的访问

    (1)依然只能访问父类自己的成员

    在这里插入图片描述

    (2)对于子类重写父类的方法,可以访问

    在这里插入图片描述

    (3)那么父类引用是如何访问子类重写的方法呢?

    答案是:通过动态绑定的方式

    4.动态绑定

    动态绑定(也称为运行时绑定):父类引用,引用了子类的对象,然后通过父类引用,调用了这个重写的方法
    在这里插入图片描述

    5.向下转型

    将⼀个⼦类对象经过向上转型之后当成⽗类⽅法使⽤,再⽆法调⽤⼦类的⽅法,但有时候可能需要调⽤⼦类特有的⽅法,此时:将⽗类引⽤再还原为⼦类对象即可 ,即向下转换
    在这里插入图片描述

    5.1 intanceof关键字

    由于向下转型不安全,java为了提高向下转型的安全性,引入instanceof ,如果表达式为true,则可以安全转换
    在这里插入图片描述

    6.多态的定义

    根据上述描述多态实现的条件,我们可以理解为多态是同一个引用、同一个方法、通过引用的对象不一样,调用同一个方法所表现的行为不一样的一种思想

    赞(0)
    未经允许不得转载:171主机测评 » 《初学JavaSE》第五讲:多态
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址