Задать вопрос
splincodewd
@splincodewd
Developer

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

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

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

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

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

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

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

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

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

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

Похожие вопросы