多态及实现方式
- 2020 年 3 月 10 日
- 筆記
什么是多态?
一句话解释多态:多态就是一个事物多种形态,就是同一符号或者名字在不同情况下具有不同解释的现象。
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:
多态性是对象多种表现形式的体现。比如下面这个例子:
现实中,比如我们按下 F1 键这个动作:
- 如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;
- 如果当前在 Word 下弹出的就是 Word 帮助;
- 在 Windows 下弹出的就是 Windows 帮助和支持。
同一个事件发生在不同的对象上会产生不同的结果。
为什么需要多态?
我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。代码重用,也称代码复用, 就是说你把一个功能写成一个模块, 以便再次需要相同功能的时候,可以直接使用,而不用重新开发。
举例: 假如你的网站需要验证码, 你就可以把验证码这个功能单独提取出来以便复用。
通常代码复用是通过类与对象来实现的, 这也是面向对象编程与面向过程编程最主要的区别之一。
作为面向对象的三大特性之一,多态也有代码重用的功能,还有解决项目中紧耦合的问题,提高程序的可扩展性。
举例:添加一个子类,继承父类,重写父类的方法。至此,该程序的扩展性得到了提升,而又不需要查看源代码是如何实现的就可以扩展新功能。
多态的实现方式
1.用抽象类实现多态
-
抽象类和抽象方法实现多态性
-
父类提供一系列规定, 约束子类的行为
-
父类可以提供一些共性的行为
2.用接口实现多态
- 生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的接口类型。
- java中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。
接口与抽象类的区别
抽象类是一类事物的高度聚合,那么对于继承抽象类的子类来说,对于抽象类来说,属于“是”的关系;而接口是定义行为规范,因此对于实现接口的子类来说,相对于接口来说,是“行为需要按照接口来完成”。
参考链接
[1]https://www.runoob.com/java/java-polymorphism.html
[2]https://blog.csdn.net/ellen5203/article/details/87342706
[3]https://www.runoob.com/java/java-polymorphism.html