Если вы думаете о греческих корнях этого термина, это должно стать очевидным.
Таким образом, полиморфизм - это способность (в программировании) представить один и тот же интерфейс для разных базовых форм (типов данных).
Например, на многих языках целые числа и поплавки являются неявно полиморфными, поскольку вы можете добавлять, вычитать, умножить и т. д., независимо от того, что типы различны. Они редко рассматриваются как объекты в обычном терминах.
Но таким же образом класс, подобный BigDecimal
или Rational
или Imaginary
, может также обеспечивать эти операции, даже если они работают на разных типах данных.
Классическим примером является класс Shape
и все классы, которые могут наследовать его (квадрат, круг, додекаэдр, нерегулярный многоугольник, знак и т. д.).
С полиморфизмом каждый из этих классов будет иметь разные базовые данные. Форма точки нуждается только в двух координатах (если предположить, что это в двумерном пространстве, конечно). Кругу нужен центр и радиус. Квадрату или прямоугольник требуется две координаты для верхних левых и нижних правых углов и (возможно) вращения. Для нерегулярного многоугольника требуется серия строк.
Заставляя класс отвечать за его код, а также за его данные, вы можете добиться полиморфизма. В этом примере каждый класс будет иметь свою собственную функцию Draw()
, а клиентский код может просто сделать:
shape.Draw()
, чтобы получить правильное поведение для любой формы.
Это в отличие от старого способа делать вещи, в которых код был отделен от данных, и у вас были бы такие функции, как drawSquare()
и drawCircle()
.
Ориентация объектов, полиморфизм и наследование - все тесно связанных с ними концепций, и они важны для понимания. В течение моей долгой карьеры было много «серебряных пуль», которые в основном просто выдохлись, но парадигма ОО оказалась хорошей. Изучите его, поймите, полюбите его - вы будете рады, что вы это сделали: -)
(a) Я изначально написал это как шутку, но оказалось, что это правильно, и, следовательно, не так уж смешно. Момермер-стирол происходит из углерода и водорода C8H8
, а полистирол производится из групп этого (C8H8)n
.
Возможно, я должен был заявить, что полип был большим количеством букв p
, хотя теперь, когда мне пришлось объяснять эту шутку, даже это не выглядит забавным.
Иногда вам нужно просто уйти, пока вы находитесь: -)