Abstract используется для создания абстрактных классов, которые нельзя инстанцировать напрямую. Абстрактный класс может содержать как реализованные, так и абстрактные (без реализации) методы. Абстрактные методы должны быть реализованы в неабстрактных подклассах.
late используется для отложенной инициализации переменных. Переменная, помеченная как late, гарантированно будет инициализирована перед своим первым использованием. Если переменная объявлена как late и не инициализирована до момента своего первого обращения к ней, произойдет ошибка времени выполнения. Это полезно для инициализации переменных, значения которых зависят от других переменных или логики, которая выполняется после объявления.
| Свойство | Abstract | late |
|---|---|---|
| Применяется к | Классам | Переменным |
| Цель | Определяет контракт, шаблон | Отложенная инициализация |
| Инстанцирование | Невозможно напрямую | Возможно |
| Обязательность | Реализации методов в подклассах (для абстрактных методов) | Инициализации перед первым использованием |
Пример abstract:
dart
Пример late:
dart