Полиморфизм -- что это в программировании

Полиморфизм - явление, при котором функции(методы) с одним и тем же именем ("поли" = "единичный") соответствуют различные кодовые реализации.

Если "в целом": полиморфизм это возможность использовать один интерфейс (в общем смысле этого слова) для разных реализаций - не уточняя как именно это произошло, в общем случае (если говорить про все вообще языки программирования) полиморфизм не является следствием наследования, а является "самостоятельным" принципом ООП.

Когда возникает полиморфизм

Полиморфизм в том числе возникает в случае, если сравнить родительский объект и производный от него: явление возникает в случае, если в классе-потомке переопределяется реализация метода с сохранением его сигнатуры функции - то есть особенностей её объявления. - такая ситуация называется "переопределением" метода.

Ещё возможна ситуация, когда в одном классе существуют два метода с одинаковыми именами но, но разными сигнатурами - и как следствие - разными реализациями (иначе зачем одинаковые реализации)(обычно они различаются порядком и/или типом передаваемых значений) - такая ситуация тоже является случаем полиморфизма и называется перегрузкой методов

Итак, мы говорили о двух случаях возникновения полиморфизма:

  1. переопределение метода (полиморфизм в сравнении с объектом родителем или же в сравнении с другим потомком такого же родителя но с другой реализацией, например унаследованной от родителя)
  2. перегрузка метода (здесь полиморфизм возникает даже в рамках одного класса - так как реализация разная, а вот "интерфейс", который в данном случае представлен просто сигнатурой каждой функции - т.е. два интерфейса одинаковы в общем смысле - т.к. одинаковы имена функций, а вот реализации различны)