【java基础】之多态详解

前言

java学习已经学习很长时间了,以前java基础的面向对象的三大特征部分没有重点看,今天补回来,这里主要写多态。

多态的概念
  1. 面向对象的三大特征

封装、继承、多态

  1. 多态性的前提

extendsimplement,是多态性的前提。

  1. 概念

一个对象即有某种形态,又有另一种形态,这就是对象的多态性。
注意:多态指的是是对象而不是类。

4.图解
在这里插入图片描述

多态的格式和使用

代码中体现多态性。其实只有一句话,父类引用指向子类对象。

分类名称 对象名 = new 子类名称();
//或者
接口名称 对象名 = new 实现类();

在这里插入图片描述
输出结果:
在这里插入图片描述

注意:
new 的是子类对象,所以调用子类对象,
子类中没有的方法,父类中有,调用的是父类中的方法。


多态中变量成员的使用特点

访问成员变量的两种方式:

  1. 直接通过对象名称访问变量,看等号左边是谁,优先用谁,没有则往上找。
  2. 间接通过成员方法访问变量,看方法属于谁,就优先用谁,没有则往上找。
//父类中定义的num=10,子类中num=20
    public static void main(String[] args) {
        Fu obj = new Zi();
        System.out.println(obj.num);
    }

输出结果为:10
如果在子类中定义一个age成员变量,在测试中找不到该成员变量。
在这里插入图片描述


多态中成员方法的访问规则

看new的是谁,就优先用谁,没有则往上找。

重点:
成员方法中:编译向左,运行向右。
成员变量中:编译向左,运行向右。
解释:
在这里插入图片描述

使用多态的好处

在这里插入图片描述
无论右边new的时候换成哪个子类对象,等号左边不会改变,更加灵活。


对象的向上转型(自动转型)

格式:父类名称 对象名 = new 子类名称();
含义:右侧创建一个子类对象,把它当做父类对象来使用。

注意:向上转型一定是安全的,因为把小范围的转化为了大范围。
Animal animal = new Cat();
把猫转化为了动物,小范围变成了大范围。

缺点:
如果向上转型,那么无法调用子类特有的方法。
**解决方法:**向下转型

对象的向下转型

向下转型:其实就是一个还原过程。

格式:子类名称 对象名 = (子类名称)父类对象

含义:将父类对象,还原成原本的子类对象。
注意:
必须保证对象原来创建的是猫,向下转型的时候也是猫。

如何判断对象是否是类的实例呢,使用instanceof

instanceof关键字

使用方法
格式:对象 instanceof 关键字
返回值:boolean(判断对象是否是后面类的实例)


已有的事,后必在有。已行的事,后必再行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章