目录
一、概念
二、理解
三、多态的引入
四、多态的介绍
五、多态的两大转型
六、java的动态绑定机制
七、instanceof关键字
一、概念
多态意味着多种形式。使用父类对象的地方都可以使用子类的对象。简单来说,多态意味着父类型的变量可以引用子类型的对象,或者接口型的引用可以指向实现该接口的类型。JAVA的多态性的实现主要通过重载、重写和接口三种主要实现方式。
二、理解
多态是同一个行为具有多个不同表现形式或形态的能力。
多态是同一个借口,使用不同的实例而执行不同操作。
三、多态的引入
一个程序案例 Master类中有feed()方法 完成对宠物的喂食
在还没有学习多态之前,我们是通过 feed()方法的重载完成宠物的喂食 但是 如果宠物多就需要编写许多feed()方法 就会非常不方便。
==========================================================
下面是多态的一个应用 解决上述问题
发现结果都一样 只是把feed()方法的形参变成父类类型 就解决了feed()方法要重复编写的问题 这就是多态的一个应用
四、多态的介绍
定义:方法或对象具有多种形态。多态是建立在封装和继承基础之上的
1.方法的多态(案例说明->重载) 重写和重载就体现多态
2.对象的多态
(重要的几句话)
(1) 一个对象的运行类型和编译类型可以不一致
(2) 编译类型在定义对象时就确定了,不可以改变
(3) 运行类型是可以改变的
(4) 编译类型看 = 的左边 运行类型看 = 的右边
Animal animal = new Dog() //编译类型是Animal 运行类型是Dog
animal = new Cat() //编译类型还是Animal 运行类型是Cat
五、多态的两大转型
| 多态的向上转型 | |
| 本质 | 父类的引用指向了子类的对象 |
| 语法 | 父类类型 引用名 = new 子类类型() |
| 特点 | ① 可以调用父类中的所有成员但需遵守访问权限 ② 不能调用子类中的特有成员 ③ 最终运行效果看子类的具体实现 |
(案例说明特点)
| 多态的向下转型 | ||
| 语法 | 子类类型 引用名 = (子类类型) 父类引用 | |
| 特点 | ① 只能强转父类的引用 ② 要求父类的引用必须指向的是当前目标类型的对象(看下图 就是原本b指向B对象空间 如果要向下转型那么 b1的编译类型是B) ③ 可以调用子类类型中的所有成员 须遵守访问权限 | |
六、java的动态绑定机制
1.当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定;
2.当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用。
(案例说明)
七、instanceof关键字
语法:
引用类型变量(object) instanceof 类(class);
作用:用来判断某个对象是否属于某种数据类型。(返回类型为布尔类型)
优点
多态隐藏了子类的类型,提高了代码的可扩充性,
缺点
只能使用父类的功能,不能使用子类的特有功能。



