Я хочу понять разницу между extends, implements и with. Когда использовать что?
"расширяет" против "реализует" против "с"
Ответ 1
Используйте extends для создания подкласса, а super - для ссылки на суперкласс.
Extends является типичным наследованием класса ООП. Если класс a расширяет класс b, все свойства, переменные, функции, реализованные в классе b, также доступны в классе a. Кроме того, вы можете переопределить функции и т.д.
Вы используете extend, если хотите создать более конкретную версию класса. Например, класс автомобиль может расширить класс автомобиль. В Dart класс может расширять только один класс.
Каждый класс неявно определяет интерфейс, содержащий все элементы экземпляра класса и любые интерфейсы, которые он реализует. Если вы хотите создать класс A, который поддерживает API класса B без наследования реализации Bs, класс A должен реализовывать интерфейс B.
Implements можно использовать, если вы хотите создать собственную реализацию другого класса или интерфейса. Когда класс a реализует класс b. Все функции, определенные в классе b, должны быть реализованы.
Когда вы реализуете другой класс, вы не наследуете код от класса. Вы только наследуете тип. В Dart вы можете использовать ключевое слово implements с несколькими классами или интерфейсами.
Миксины - это способ повторного использования кода класса в нескольких иерархиях классов.
With используется для включения Mixins. Миксин - это другой тип структуры, который может использоваться только с ключевым словом with.
Они используются во Flutter для включения общих фрагментов кода. Обычно используемый Mixin - это SingleTickerProviderStateMixin.