Я изучаю концепции ООП, которые на самом деле не имеют устоявшихся определений.
Я слышал разные вещи о полиморфизме и не могу решить, что правильно.
Большинство людей скажут, чтоэто теория типов.Это означает, что функция может принимать несколько типов параметров, которые имеют что-то общее.
Специальный полиморфизм связан с различными перегрузками одной и той же функции.
Параметрический полиморфизм - это универсальные функции.
Полиморфизм подтипов заключается в том, что если функция принимает определенный класс в качестве параметра, она также может принимать свои подклассы.(Конечно, в качестве параметра могут быть переданы только те, которые являются не абстрактными, а конкретными).
Существует, казалось бы, иное определение.Есть те, кто говорит, что полиморфизм означает, что функция может иметь различные реализации (морфы / формы).В этом смысле ... - интерфейсные функции, - абстрактные функции абстрактных классов, - и виртуальные функции, которые могут быть переопределены подтипом ... все считаются полиморфными.
Как мне сказали, полиморфизм в этомсмысл может быть определен как имеющий разные результаты, если одна и та же функция вызывается для разных объектов.
И, добавив к путанице, кто-то сказал, что только виртуальные функции полиморфны, потому что у них уже есть реализация.
Для меня первый способ, которым я представил полиморфизм, а второй кажется совершенно другим, но, может быть, оба они соответствуют определению полиморфизма, и я просто не могу его понять.
Так что же такое полиморфизм в программировании?Это просто теория типов?
В этом вопросе я хотел бы обратиться к этому вопросу: https://stackoverflow.com/questions/25163683/polymorphism-and-interfaces-clarification#=
Это поднимает почти ту же проблему, но я не мог разобратьзаключение.