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

Dart: sealed-класс

Вопрос

Что верно про sealed class Result в Dart 3?

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

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

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

Коротко

Правильный ответ: Он абстрактный, прямые подтипы только в его библиотеке, switch проверяется на полноту. sealed закрывает иерархию: все прямые подтипы находятся в той же библиотеке, поэтому компилятор знает их полный список и требует исчерпывающий switch.

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

  1. Его нельзя наследовать вообще, даже в той же библиотеке: это запечатанный конечный класс
  2. Это синоним final class: оба запрещают наследование снаружи и дают проверку полноты
  3. Его можно создать напрямую через Result(), если в нём нет абстрактных методов
  4. Он абстрактный, прямые подтипы только в его библиотеке, switch проверяется на полнотуправильный ответ

Разбор

sealed закрывает иерархию: все прямые подтипы находятся в той же библиотеке, поэтому компилятор знает их полный список и требует исчерпывающий switch. Сам sealed-класс абстрактный, экземпляр создать нельзя. final class другой модификатор: запрещает наследование и реализацию вне библиотеки, но полноты switch не даёт.

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

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

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