Выбор ответа Senior Dart: классы и миксины обновлено
Dart 3: модификатор interface
Вопрос
В пакете объявлен interface class Storage. Что разрешено коду в другой библиотеке?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Создание экземпляра и implements Storage, но не наследование через extends Storage. interface запрещает наследование реализации вне своей библиотеки: снаружи можно реализовать контракт (implements), но не extends.
Варианты ответа
extends Storageиimplements Storage, но не создание экземпляра: класс считается абстрактным- Только
extends Storage: интерфейсный класс нельзя реализовать снаружи черезimplements - Создание экземпляра и
implements Storage, но не наследование черезextends Storageправильный ответ - Ничего, кроме создания экземпляра: наследование и реализация закрыты за пределами библиотеки
Разбор
interface запрещает наследование реализации вне своей библиотеки: снаружи можно реализовать контракт (implements), но не extends. Создавать экземпляр можно, потому что класс не абстрактный. Запрет implements с разрешением extends даёт модификатор base, запрет всего, кроме создания, даёт final. Модификаторы помогают авторам пакетов менять реализацию без поломки клиентов.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.