Выбор ответа Senior Dart: классы и миксины обновлено

Dart 3: модификатор interface

Вопрос

В пакете объявлен interface class Storage. Что разрешено коду в другой библиотеке?

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

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

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

Коротко

Правильный ответ: Создание экземпляра и implements Storage, но не наследование через extends Storage. interface запрещает наследование реализации вне своей библиотеки: снаружи можно реализовать контракт (implements), но не extends.

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

  1. extends Storage и implements Storage, но не создание экземпляра: класс считается абстрактным
  2. Только extends Storage: интерфейсный класс нельзя реализовать снаружи через implements
  3. Создание экземпляра и implements Storage, но не наследование через extends Storageправильный ответ
  4. Ничего, кроме создания экземпляра: наследование и реализация закрыты за пределами библиотеки

Разбор

interface запрещает наследование реализации вне своей библиотеки: снаружи можно реализовать контракт (implements), но не extends. Создавать экземпляр можно, потому что класс не абстрактный. Запрет implements с разрешением extends даёт модификатор base, запрет всего, кроме создания, даёт final. Модификаторы помогают авторам пакетов менять реализацию без поломки клиентов.

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

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

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