Полиморфизм в ООП

ООП базируется на трех основных свойствах - наследование, инкапсуляция и полиморфизм. Вопрос в следующем: полиморфизм в ооп - это всегда ad-hoc полиморфизм? Все говорят, что это именно он. Но ad-hoc полиморфизм основам на перегрузке процедур и приведении типов. В некоторых ООП языках отсутствует возможность перегрузки методов и раз это так, то о каком полиморфизме тогда там идет речь?

Почему не сказать, что в ООП применяется полиморфизм подтипов? Ведь класс B наследуемый от класса A является подтипом класса A и может использовать все унаследованные методы, переопределяя и дополняя их. Это же полиморфизм подтипов, или?

Или пойдем от обратного. Если вы опровергаете это, то какой полиморфизм будет в языках где отсутствует перегрузка?


Ответы (1 шт):

Автор решения: c0ol

В языках выделяют даже (классификация Лука Карделли) четыре разновидности полиморфизма:

  1. универсальный (параметрический, включения (или подтипов));
  2. ad-hoc (перегрузка, приведение типов)
→ Ссылка