splincodewd
@splincodewd
Developer

Как отличить полиморфизм в языках программирования?

Посмотрел презентацию Яндекса по С++. Там полиморфизм заключается в том, что мы делаем указатель на родительский класс, кстати, зачем мы это делаем?

20f999b25b8c404185a878358d24441b.png
И тут он чисто на виртуальных методах основывается, а точно такой же пример можно воспроизвести на JS, PHP, Python? Чтобы сразу понять, в чем же полиморфизм.

Я прочитал в теории, что полиморфизм - это возможность выбрать нужный метод исходя из типа данных. Но ведь в других языках программирования, нет типов данных, как таковых, то есть мы не указываем тип данных, он динамически присваивается интерпретатором, так как в этих языках определяется полиморфизм?

aacf6d35309d48fd9c8c9d9603385d3a.png98f5ac410ba44176b3226b9e72e953ef.png
Судя по слайдам, полиморфизм в С++ вовсе не сводится к использованию ключевого слова virtual, а значит и в других языках что-то иначе все может представляться.

В одном видео нашел, что полиморфизм это когда мы в языке можем сделать вот так:
ddf0531e9c4b499c9d8cf923bda74037.png
  • Вопрос задан
  • 489 просмотров
Решения вопроса 2
@MiiNiPaa
Вам нужно хорошую книжку. Это одно из базовых понятий и вряд ли вы изучите этот вопрос на Тостере.

Начнём с того, что основная идея полиморфизма — одинаково работать со множеством типов.

Типов полиморфизма много, начиная с самого простого — параметрического полиморфизма, aka перегрузка функций. В Питоне, например, можно написать print x, и получить этот икс на экране. Причём получим разный результат в зависимости от конкретного типа x. В С++ можно писать cout << x, можно писать abs(x), и выполнятся будут разные действия в зависимости от x. В С, к примеру, пришлось бы самому выбирать какую функцию вызвать: abd, fabs, labs... так как в С нет перегрузки функций.

Динамический полиморфизм работает похожим образом: представьте себе алгоритм, который должен рассчитать общую сумму задолженности. У человека могут быть займы займы разных видов, которые считаются по-разному. Вместо того, чтобы прописывать явный алгоритм действий для каждого типа займов, алгоритм работает с абстрактным типом займов, для которого определена функция Займ.ПосчитатьДолгНаДату(Дата). Конкретный алгоритм расчёта зашит в конкретный тип-потомок Займа, алгоритм лишь спрашивает какая задолженность будет на конкретную дату, и его не колышет какой на самом деле это займ.
Ответ написан
maaGames
@maaGames
Погроммирую программы
А вот не нужно смотреть презентации, надо читать книжку, хотя бы для чайников. Нельзя про С++ смотреть видосики, надо читать. Без этого никак. Тогда часть вопросов отпадёт, ещё больше вопросов появится...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы