小编典典

什么是多态性,它的用途是什么,它是如何使用的?

all

什么是多态性,它的用途是什么,它是如何使用的?


阅读 109

收藏
2022-03-06

共1个答案

小编典典

如果您考虑该术语的希腊词根,它应该变得显而易见。

  • 多边形 = 多:多边形 = 多面,聚苯乙烯 = 多苯乙烯(a),多语言 = 多种语言,依此类推。
  • Morph = 变化或形式:形态 = 研究生物形式,Morpheus = 希腊的梦之神,能够采取任何形式。

因此,多态性是(在编程中)为不同的底层形式(数据类型)呈现相同接口的能力。

例如,在许多语言中,整数和浮点数是隐式多态的,因为您可以加、减、乘等,而不管类型是否不同。通常,它们很少被视为对象。

但是,以同样的方式,类似BigDecimalor的类RationalImaginary可以提供这些操作,即使它们对不同的数据类型进行操作。

经典的例子是Shape类和所有可以从它继承的类(正方形、圆形、十二面体、不规则多边形、splat 等)。

使用多态性,这些类中的每一个都将具有不同的基础数据。一个点形状只需要两个坐标(当然假设它在二维空间中)。圆需要一个圆心和一个半径。正方形或矩形需要左上角和右下角的两个坐标以及(可能)旋转。一个不规则的多边形需要一系列的线。

通过让类对其代码和数据负责,您可以实现多态性。在这个例子中,每个类都有自己的Draw()函数,客户端代码可以简单地做:

shape.Draw()

获得任何形状的正确行为。

这与代码与数据分离的旧方式形成鲜明对比,您将拥有诸如drawSquare()and之类的函数drawCircle()

面向对象、多态性和继承都是密切相关的概念,了解它们至关重要。在我漫长的职业生涯中,有许多“灵丹妙药”基本上都以失败告终,但 OO
范式被证明是一个很好的范式。学习它,理解它,爱它——你会很高兴你做到了:-)


(a)我最初是把它写成一个玩笑,但结果证明它是正确的,因此并不那么好笑。单体苯乙烯恰好是由碳和氢制成的,而聚苯乙烯是由它们的基团制成的。C8H8``(C8H8)n

也许我应该说息肉是这封信的多次出现,p尽管现在我不得不解释这个笑话,即使这看起来也不好笑。

有时,您应该在落后时退出:-)

2022-03-06