Выбор ответа Junior ООП, трейты и интерфейсы спрашивают часто обновлено
Трейт и интерфейс
Вопрос
Чем трейт отличается от интерфейса?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Трейт подмешивает реализацию, но не тип; интерфейс задаёт контракт и тип. Трейт это механизм горизонтального переиспользования кода: методы копируются в класс при компиляции. instanceof SomeTrait и тип параметра SomeTrait не работают.
Варианты ответа
- Трейт можно указать как тип параметра, а интерфейс для этого не годится
- Трейт подмешивает реализацию, но не тип; интерфейс задаёт контракт и типправильный ответ
- Класс может реализовать только один интерфейс, но подключить много трейтов
- Трейты устарели в PHP 8 и оставлены только для обратной совместимости
Разбор
Трейт это механизм горизонтального переиспользования кода: методы копируются в класс при компиляции. instanceof SomeTrait и тип параметра SomeTrait не работают. Интерфейс описывает контракт без реализации (кроме констант) и является типом. Интерфейсов класс может реализовать сколько угодно, трейтов тоже. Трейты полностью поддерживаются, в PHP 8.2 им даже разрешили константы.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «ООП, трейты и интерфейсы»
- Абстрактный класс или интерфейс в PHP
- Поверхностное клонирование
- Продвижение свойств в конструкторе
- Класс с интерфейсом и наследованием
- final и видимость констант
- Диспетчер событий с приоритетами
- Склад с исключениями предметной области
- Фигуры через интерфейс и абстрактный класс