РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
100 of 723 menu

Ключевое слово with

Ключевое слово with используется при объявлении класса для подключения одной или нескольких примесей (mixin). Примеси позволяют добавлять функциональность классу без использования наследования. В качестве параметров после with указываются имена примесей, через запятую, если их несколько. Класс, использующий with, получает все методы и свойства подключенных примесей.

Синтаксис

class MyClass with Mixin1, Mixin2 { // тело класса }

Пример

Давайте создадим примесь Walkable с методом walk и подключим ее к классу Person:

mixin Walkable { void walk() { print('I can walk'); } } class Person with Walkable { String name; Person(this.name); } void main() { Person person = Person('Tom'); person.walk(); }

Результат выполнения кода:

"I can walk"

Пример

Давайте подключим несколько примесей к одному классу. Создадим примеси Walkable и Swimmable и подключим их к классу Duck:

mixin Walkable { void walk() { print('I can walk'); } } mixin Swimmable { void swim() { print('I can swim'); } } class Duck with Walkable, Swimmable { String name; Duck(this.name); } void main() { Duck duck = Duck('Donald'); duck.walk(); duck.swim(); }

Результат выполнения кода:

"I can walk" "I can swim"

Пример

Давайте используем примесь вместе с наследованием. Класс Animal наследуется классом Dog, который также подключает примесь Walkable:

mixin Walkable { void walk() { print('I can walk'); } } class Animal { String name; Animal(this.name); } class Dog extends Animal with Walkable { Dog(String name) : super(name); } void main() { Dog dog = Dog('Rex'); print(dog.name); dog.walk(); }

Результат выполнения кода:

"Rex" "I can walk"

Смотрите также

  • ключевое слово mixin,
    которое объявляет примесь
  • ключевое слово extends,
    которое наследует класс
  • ключевое слово implements,
    которое реализует интерфейс
  • ключевое слово class,
    которое объявляет класс
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить