Мы используем cookies
Все заметкиВсе заметкиВсе заметки

Ковариантность и контравариантность

В сфере разработки много тех, кто обучается самостоятельно. В таких случаях некоторым терминам не уделяется столько внимания, сколько хотелось бы. Мы в доступной форме будем рассказывать о разных понятиях разработки. Сегодня это будет ковариантность и контравариантность. #терминнедели

Эти термины используются в типизированных языках программирования: Java, JavaScript, PHP, C, C++, C#, Python и др. Ковариантность и контравариантность описывают совместимость типов по отношению друг к другу. Вместе они обеспечивают механизм типобезопасности. Она отвечает за надежность системы типов, которая считается безопасной, если исключаются ошибки согласования во время выполнения.

Разберем сложные термины на простых примерах — на котиках и собачках.

Ковариантность позволяет уточнять тип возвращаемого значения. То есть при наследовании мы можем повысить возвращаемый тип с «животного» до «кошки» или «собаки». Примеры php, ts.

Контравариантность позволяет снижать требования для входных параметров. То есть при использовании в коде «кошки» или «собаки», если мы понимаем возможность работать напрямую с «животным», мы можем понизить требования в наследуемом коде. Пример php, ts.

Опираясь на эти знания, мы можем писать более гибкий и при этом типизированный код.

Chulakov Dev

3 июня  •  Скопировать ссылкуСсылка скопирована

Следующая заметкаНа случай важных переговоров
  • Копировать ссылку
  • Telegram
  • Vkontakte
  • Поделиться