"расширяет" против "реализует" против "с"

Я хочу понять разницу между 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 с несколькими классами или интерфейсами.


С (Mixins):

Миксины - это способ повторного использования кода класса в нескольких иерархиях классов.

With используется для включения Mixins. Миксин - это другой тип структуры, который может использоваться только с ключевым словом with.

Они используются во Flutter для включения общих фрагментов кода. Обычно используемый Mixin - это SingleTickerProviderStateMixin.