多态及实现方式

  • 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