gpt4 book ai didi

oop - 什么是多态性、它的用途是什么以及如何使用它?

转载 作者:行者123 更新时间:2023-12-03 03:54:22 26 4
gpt4 key购买 nike

什么是多态性、它的用途是什么以及如何使用它?

最佳答案

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

  • Poly = 许多:多边形 = 多面、聚苯乙烯 = 许多苯乙烯(a)、多语言 = 许多语言,依此类推。
  • Morph = 变化或形态:形态学 = 对生物形态的研究,Morpheus = 能够呈现任何形态的希腊梦之神。

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

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

但是,以同样的方式,像 BigDecimal 这样的类或RationalImaginary也可以提供这些操作,即使它们操作不同的数据类型。

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

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

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

shape.Draw()

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

这与旧的处理方式形成鲜明对比,在旧的处理方式中,代码与数据是分离的,并且您将拥有诸如 drawSquare() 之类的函数。和drawCircle() .

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

<小时/>

(a) 我最初写这个是为了开玩笑,但事实证明它是正确的,因此并不那么有趣。单体苯乙烯恰好是由碳和氢制成的,C<sub>8</sub>H<sub>8</sub> ,聚苯乙烯由其组成, (C<sub>8</sub>H<sub>8</sub>)<sub>n</sub> .

也许我应该说,息肉是字母 p 的多次出现。不过,现在我必须解释这个笑话了,即使这样看起来也不好笑。

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

关于oop - 什么是多态性、它的用途是什么以及如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1031273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com