Поліморфізм (програмування)
Поліморфі́зм — концепція в програмуванні, відповідно до якої використовується спільний інтерфейс для обробки даних різних спеціалізованих типів.
На противагу поліморфізму, концепція мономорфізму вимагає однозначного зіставлення.
В контексті об'єктно-орієнтованого програмування, найпоширенішим різновидом поліморфізму є здатність екземплярів підкласу грати роль об'єктів батьківського класу, завдяки чому екземпляри підкласу можна використовувати там, де використовуються екземпляри батьківського класу.[1]
Прикладом поліморфізму в більшості мов програмування є бінарний оператор +, який може мати своїми аргументами дані різного типу: цілі числа, числа з плаваючою точкою, комплексні числа навіть рядки:
- 1 + 2 - операнди цілого типу, результат цілого типу.
- 1.2 + 1.0e3 - операнди дійсних типів, результат дійсного типу
- "Андрій" + "Ольга" - операнди рядки, результат - конкатенований рядок
Поліформізм реалізується в багатьох мовах програмування за домогою перевантаження функцій.
Характеристики [ред.]
Поліморфізм — один з трьох найважливіших механізмів об'єктно-орієнтованого програмування. Поліморфізм дозволяє писати більш абстрактні програми і підвищити коефіцієнт повторного використання коду.
Спільні властивості об'єктів об'єднуються в систему, яку можуть називати по різному : інтерфейс, клас. Спільність має зовнішнє і внутрішнє вираження. Зовнішня спільність проявляється як однаковий набір методів з однаковими іменами і сигнатурами (типами аргументів і результатів).
Внутрішня спільність є однакова функціональність методів. Її можна описати інтуїтивно виразити у вигляді строгих законів, правил, яким повинні підкорятись методи. Можливість приписувати різну функціональність одному методу (функції, операції) називається перевантаженням методу (функції, операції).
Джерела інформації [ред.]
- ↑ Daniel P. Friedman, Mitchell Wand, Christopher T. Haynes (2001). Essentials of Programming Languages (англ.) (вид. друге). The MIT Press. ISBN 0-262-06217-8.
- Використано матеріали зі статті в російській Вікіпедії.