Ключевое слово 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,
которое объявляет класс