Качина типізація
тип динамічної типізації в об'єктно-орієнтованому програмуванні / З Вікіпедії, безкоштовно encyclopedia
Шановний Wikiwand AI, Давайте зробимо це простіше, відповівши на ключові запитання:
Чи можете ви надати найпопулярніші факти та статистику про Качина типізація?
Підсумуйте цю статтю для 10-річної дитини
Неявна типізація, латентна типізація або качина типізація (калька з англ. Duck typing) — різновид динамічної типізації, застосовуваної в деяких мовах програмування, коли межі використання об'єкта визначаються його поточним набором методів і властивостей, на противагу успадкуванню від певного класу. Тобто вважається, що об'єкт реалізує інтерфейс, якщо він містить всі методи цього інтерфейсу, незалежно від зв'язків в ієрархії наслідування та приналежності до якогось конкретного класу.
Назва терміна походить від англійського «duck test» («качиний тест»), який в оригіналі звучить так:
- «If it looks like a duck, swims like a duck and quacks like a duck, then it probably is a duck».
- («Якщо воно виглядає як качка, плаває як качка і кахкає як качка, то це напевно і є качка»).
Качина типізація розв'язує такі проблеми ієрархічної типізації як:
- неможливість явно вказати (шляхом наслідування) на сумісність інтерфейсу з усіма справжніми та майбутніми інтерфейсами, з якими він ідейно сумісний;
- експоненціальне збільшення числа зв'язків в ієрархії типів при хоча б частковій спробі це зробити.
Іншим близьким підходом є структурні підтипи в OCaml, де типи об'єктів сумісні, якщо сумісні сигнатури їхніх методів, незалежно від оголошеного наслідування, причому все це перевіряється під час компіляції програми.