Поліморфізм включення
Цей поліморфізм називають чистим поліморфізмом. Застосовуючи таку форму поліморфізму, споріднені об'єкти можна використовувати узагальнено. За допомогою заміщення та поліморфізму включення можна написати один метод для роботи з усіма типами об'єктів TPerson. Використовуючи поліморфізм включення та заміщення, можна працювати з будь-яким об'єктом, який проходить тест «is-A». Поліморфізм включення спрощує роботу з додавання до програми нових підтипів, оскільки потрібно додавати конкретний метод кожного нового типу, можна використовувати вже існуючий, лише змінивши у ньому поведінка системи. За допомогою поліморфізму можна повторно використати базовий клас; використовувати будь-який нащадок або методи, які використовує базовий клас.
Параметричний поліморфізм
Використовуючи Параметричний поліморфізм, можна створювати універсальні базові типи. У разі параметричного поліморфізму функція реалізується для всіх типів однаково і таким чином функція реалізована для довільного типу. У Параметричному поліморфізм розглядаються параметричні методи та типи.
Замість того, щоб писати клас для кожного конкретного типу слід створити типи, які будуть реалізовані під час виконання програми, тобто ми створюємо параметричний тип.
Абстрактні методи часто належать до відкладених методів. Клас, у якому визначено цей метод може викликати метод і поліморфізм забезпечує виклик відповідної версії відкладеного методу у дочірніх класах. Спеціальний поліморфізм допускає спеціальну реалізацію даних кожного типу.
Це окремий випадок поліморфізму. За допомогою навантаження те саме ім'я може позначати різні методи, причому методи можуть відрізнятися кількістю і типом параметрів, тобто не залежать від своїх аргументів. Метод може необмежуватись специфічними типами параметрів багатьох різних типів.
Порівняння поліморфізму у функціональному та об'єктно-орієнтованому програмуванні
Система класів у ФП та в ОВП влаштовані по-різному, тому до їх порівняння слід підходити дуже обережно.
Поліморфізм є досить відокремленим властивістю мови програмування. Наприклад, класи в C++ спочатку були реалізовані як препроцесор для C. Для Haskell існує алгоритм трансляції програм, що використовують спеціальний поліморфізм, в програми з виключно параметричним поліморфізмом.
Незважаючи на концептуальні відмінності систем класів у ФП та ООП, реалізуються вони приблизно однаково – за допомогою таблиць віртуальних методів. Використовується часто у Java.