Перейти до змісту

Поліморфізм

Поліморфізм в інформатиці — це здатність однаковим чином обробляти дані різних типів.

Існує декілька видів поліморфізма. Мови програмування зі статичною типізацією можуть бути статично неполіморфними і статично поліморфними. Для останніх характерні наступні види поліморфізма:

  • спеціальний поліморфізм — "один інтерфейс — багато реалізацій". Характерні представники: C++, Java, C# — перевантаження (overloading) методів, тобто різні методи з однаковими іменами які приймають параметри різних типів
  • параметричний поліморфізм — "одна реалізація — багато інтерфейсів". Наприклад, "дженеріки" в Java і C#, шаблони в C++
  • поліморфізм підтипів — саме те, що розуміють під поліморфізмом в ООП. Ключове поняття: якщо клас B успадковано від класа A, то екземпляр класа B одночасно є і екземпляром класа A.

В мовах з динамічною типізацією поліморфізм присутній завжди, він як би є "побічним ефектом" оскільки при динамічній типізації перевірка типів проводиться вже під час виконання програми.

Поліморфізм ще можна визначити як можливість обробки екземплярів різних типів даних, тобто таких, які створені на основі різних класів, за допомогою функцій (методів) з однаковими іменами. Результати роботи одноімених методів можуть суттєво відрізнятись. В цьому контексті під словом "поліморфізм" можна розуміти "багато форм одного і того ж слова", тобто імені метода.

Але класи не обов'язково мають бути зв'язані успадкуванням. Поліморфізм як один з ключевых елементів ООП може існувати незалежно від успадкування. Класи можуть бути не пов'язаними ієрархією успадкування, але мати однакові методи, тобто мати однаковий або схожий інтерфейс при зовсім різній реалізації. Створення "єдиних інтерфейсів" дозволяє робити програми більш зрозумілими.

Back to top