Выбор ответа Junior Dart: классы и миксины спрашивают часто обновлено

Dart: implements против extends

Вопрос

Класс B implements A. Что получает B от A?

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

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

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

Коротко

Правильный ответ: Только интерфейс: все члены A придётся реализовать в B самостоятельно. В Dart каждый класс неявно задаёт интерфейс, и implements берёт только его: сигнатуры без реализации, поэтому всё нужно написать самому, и super на A не указывает.

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

  1. Реализацию всех методов A, как при extends, плюс возможность вызывать super
  2. Реализацию только абстрактных методов, а конкретные методы придётся написать самому
  3. Ничего: implements работает только с классами, объявленными с модификатором interface
  4. Только интерфейс: все члены A придётся реализовать в B самостоятельноправильный ответ

Разбор

В Dart каждый класс неявно задаёт интерфейс, и implements берёт только его: сигнатуры без реализации, поэтому всё нужно написать самому, и super на A не указывает. Реализацию наследует extends. Модификатор interface из Dart 3 ограничивает, что можно делать с классом вне библиотеки, но для implements он не обязателен.

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

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

Термины по теме