面向对象编程(OOP)三大特性大家还记得吧:封装、继承、多态。
今天我们温故而知新,把多态聊清楚。
01
什么是多态
多态细分:静态编译和动态编译两种
1)静态主要体现在方法重载上
2)动态就是所谓的运行时绑定
上面说的编译时多态是静态的,主要是指方法的重载,它是根据参数【类型和个数】的不同来区分不同的函数,通过编辑之后会变成两个不同的函数,在运行时谈不上多态。
而运行时多态(一般严格意义上的多态指的就是这种)是动态的,它是通过动态绑定来实现的【向上转型】,也就是我们所说的多态性。
举例:
People p=new Man();
People w=new Woman();
一句话总结:让程序可以选择多个运行状态,这就是多态性。
02
特点
多态通过分离做什么和怎么做,从另一个角度将接口和实现分离开来。
03
作用(解决了什么问题)
多态不但能够改善代码的组织结构和可读性,还能够创建可扩展的程序—无论在项目最初创建时还是在需要添加新功能时都可以“生长” 的程序。
多态方法调用允许一种类型表现出与其他相似类型之间的区别,只要它们都是从同一基类导出而来的。这种区别是根据方法行为的不同而表现出来的。
04
多态和继承的关系
继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。
同时继承也为实现多态做了铺垫
05
总结
多态的核心是向上转型