all

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

发布于 2022-03-22 23:05:50

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

关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2022-03-22
    为面试而生,有面试问题,就找面试哥。

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

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

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

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

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

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

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

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

    shape.Draw()
    

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

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

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


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

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

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



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看