Как вызвать идентично названную функцию из расширяющего класса вместо mixin - PullRequest
0 голосов
/ 04 марта 2020

Рассмотрим следующий фрагмент кода:

void main() {
  Band myBand = new Band();
  myBand.guitar();
  print("Number of players " + myBand.players.toString());
}

class Rock {
  int players=2;
  void guitar() {
    print('Rock guitar');
  }
}

mixin Jazz {
  int players=1;
  void guitar() {
    print('Jazz guitar');
  }
}

class Band extends Rock with Jazz {

}

Здесь у меня есть класс Band , который расширяет Rock и миксин Jazz . Оба имеют свойство и метод с одним и тем же именем - players и guitar.

Если я теперь создаю подкласс Band и вызываю метод guitar или запрашиваю у игрока property, я получаю:

Джаз-гитара Количество игроков 1

Очевидно, по какой-то причине миксин имеет большее значение. Что мне нужно сделать, чтобы вызвать свойства или методы расширяющего класса Rock , а не из mixin, из моего подкласса myBand ?

1 Ответ

0 голосов
/ 04 марта 2020

Миксины в Dart работают путем создания нового класса, который накладывает реализацию миксина поверх суперкласса для создания нового класса - он не «на стороне», а «на вершине» суперкласса, так что нет никакой двусмысленности в том, как разрешить поиск.

Проверка Когда использовать миксины и когда использовать интерфейсы в Dart?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...