Немного про полиморфизм простыми словами 🤓

Мы постоянно пишем наши приложения и слово полиморфизм кажется нам само собой разумеющимся и понятным, весь мир нам понятен и мы - в абсолюте преисполнены в его познании.

Часто мы видим полиморфизм так: (В примерах чуть непривычный синтаксис из-за обрезки некоторых символов в Сетке)

1) Условный пример на принцип Барбары-Лисков или базовый-дочерний класс // Есть некоторый интерфейс / базовый класс interface Animal { say(msg) } … // И есть его потомки class Dog implement Animal { say(msg) { гав } } class Cat implement Animal { say(msg) { мяв } } … // У нас есть питомцы - каждый из низ говорит по-своему List Animal pets = [Dog(), Cat()] for pet in pets { pet.say() // Собакен делает “гав”, котофей “мяв” }

2) Есть известные всем дженерик // Допустим, что-то суммируем для разных числовых типов sum T:numeric(…args: List T) { … } … sum int(1, 2, 3, 4) sum float(3.14, 1.5)

Часто слышим фразу, описывающую полиморфизм: "один интерфейс - множество реализаций.

А если дальше и хочется выйти чуть за рамки привычного, рекомендую данную статью, она не сложная и интересная, дает больше понимания что такое полиморфизм и каким он бывает: https://medium.com/devschacht/polymorphism-207d9f9cd78