Полиморфизм в ООП
ООП базируется на трех основных свойствах - наследование, инкапсуляция и полиморфизм. Вопрос в следующем: полиморфизм в ооп - это всегда ad-hoc полиморфизм? Все говорят, что это именно он. Но ad-hoc полиморфизм основам на перегрузке процедур и приведении типов. В некоторых ООП языках отсутствует возможность перегрузки методов и раз это так, то о каком полиморфизме тогда там идет речь?
Почему не сказать, что в ООП применяется полиморфизм подтипов? Ведь класс B наследуемый от класса A является подтипом класса A и может использовать все унаследованные методы, переопределяя и дополняя их. Это же полиморфизм подтипов, или?
Или пойдем от обратного. Если вы опровергаете это, то какой полиморфизм будет в языках где отсутствует перегрузка?
Ответы (1 шт):
В языках выделяют даже (классификация Лука Карделли) четыре разновидности полиморфизма:
- универсальный (параметрический, включения (или подтипов));
- ad-hoc (перегрузка, приведение типов)