Абстрактный класс:
- Может иметь как обычные, так и абстрактные методы и поля.
- Нельзя создать экземпляр абстрактного класса напрямую.
- Может содержать конструкторы.
- Наследуется с помощью ключевого слова
extends. Поддерживается единичное наследование.
- Используется для определения общего поведения и структуры для подклассов.
Миксин:
- Может содержать методы и поля, но не может определять конструкторы.
- Не предназначен для создания экземпляров.
- Используется для добавления функциональности к классам, которая не вписывается в иерархию наследования.
- Комбинируется с классом с помощью ключевого слова
with. Класс может использовать несколько миксинов.
| Признак | Абстрактный класс | Миксин |
|---|
| Экземпляр | Нельзя создать напрямую | Нельзя создать |
| Конструкторы | Может иметь | Не может иметь |
| Наследование | extends (единичное) | with (множественное) |
| Основное назначение | Определение иерархии | Добавление поведения |
Пример использования абстрактного класса:
dart
Пример использования миксина:
dart