多态
学习完封装和继承后,Java三大特性之一还有最后一个多态
那么多态是什么?
概念
多态字面含义就是多种表现形式
对应Java:同一操作作用于不同的类的对象,将产生不同的执行结果。
实现
向上转型
基类引用指向派生类对象
//Cat为基类
//Ragdoll为派生类
class Demo{
public static void main(String args[]){
//向上转型
Cat cat = new Ragdoll();
}
}
向上转型既可以使用派生类强大的功能,又可以抽取基类的共性。
不能调用派生类中定义,而基类中没有的方法、属性。
为什么能向上转型
自动实现,编译器自动将派生类实例转为通用性基类。
执行基类|派生类的方法
执行派生类的方法。
多态的实现,一个基类可以有多个派生类。
每个派生类重写基类的方法,(相同方法的实现不同)
基类引用调用派生类方法,体现了多态。
绑定
动态绑定(后期绑定、运行时绑定):运行期间,根据对象的实际类型调用方法。
Java多态通过动态绑定实现。
多态前提:
- 继承
- 重写
- 基类引用指向派生类对象
一个基类引用,指向不同的派生类对象,执行该方法时,表现出不同的行为。
执行方法
前提
- 基类引用调用派生类对象
方法 | 基类的方法 | 派生类的方法 | 不执行 |
---|---|---|---|
基类中定义,派生类中重写的方法 | |||
基类中定义,派生类中没有重写的方法 | |||
基类中没有,派生类中定义的方法 |
应用意义
- 增强代码的可维护性
- 封装通过合并特征和行为创建新的数据类型,将细节私有化,把接口和实现分离
- 多态通过分离 做什么、怎么做,消除类型的耦合关系,将接口和实现分离
- 增强代码的可扩展性
博客相关java项目:查看Github项目
对应github项目:Demo5
导入项目的方法: Java基础——Java如何导入本地项目