Выбор ответа Junior ООП, трейты и интерфейсы спрашивают часто обновлено

Трейт и интерфейс

Вопрос

Чем трейт отличается от интерфейса?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Трейт подмешивает реализацию, но не тип; интерфейс задаёт контракт и тип. Трейт это механизм горизонтального переиспользования кода: методы копируются в класс при компиляции. instanceof SomeTrait и тип параметра SomeTrait не работают.

Варианты ответа

  1. Трейт можно указать как тип параметра, а интерфейс для этого не годится
  2. Трейт подмешивает реализацию, но не тип; интерфейс задаёт контракт и типправильный ответ
  3. Класс может реализовать только один интерфейс, но подключить много трейтов
  4. Трейты устарели в PHP 8 и оставлены только для обратной совместимости

Разбор

Трейт это механизм горизонтального переиспользования кода: методы копируются в класс при компиляции. instanceof SomeTrait и тип параметра SomeTrait не работают. Интерфейс описывает контракт без реализации (кроме констант) и является типом. Интерфейсов класс может реализовать сколько угодно, трейтов тоже. Трейты полностью поддерживаются, в PHP 8.2 им даже разрешили константы.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.