Ключевое слово mixin
Ключевое слово mixin используется для объявления миксина.
Миксин - это специальная конструкция, которая позволяет
добавлять функциональность (методы и свойства) в классы
без использования классического наследования.
Миксины решают проблему одиночного наследования в Dart,
позволяя классу использовать код сразу из нескольких источников.
При объявлении миксина можно указать ключевое слово on,
которое ограничивает круг классов, к которым данный миксин
может быть применен. Миксин не может иметь конструктор.
Синтаксис
mixin MixinName on SuperClass {
// methods and properties
}
class MyClass extends SuperClass with MixinName {
// class body
}
Пример
Давайте создадим простой миксин, который добавляет классу метод для приветствия, и применим его:
mixin GreetMixin {
void greet()
{
print('Hello from mixin');
}
}
class Person with GreetMixin {
}
void main()
{
Person person = Person();
person.greet();
}
Результат выполнения кода:
"Hello from mixin"
Пример
Давайте используем ключевое слово on, чтобы миксин
мог применяться только к классам, наследующим
определенный базовый класс:
class Animal {
void breathe()
{
print('Breathing');
}
}
mixin WalkMixin on Animal {
void walk()
{
print('Walking');
}
}
class Dog extends Animal with WalkMixin {
}
void main()
{
Dog dog = Dog();
dog.breathe();
dog.walk();
}
Результат выполнения кода:
"Breathing"
"Walking"
Пример
Давайте применим несколько миксинов к одному классу, чтобы объединить их функциональность:
mixin FirstMixin {
void first()
{
print('First');
}
}
mixin SecondMixin {
void second()
{
print('Second');
}
}
class Combined with FirstMixin, SecondMixin {
}
void main()
{
Combined res = Combined();
res.first();
res.second();
}
Результат выполнения кода:
"First"
"Second"
Смотрите также
-
ключевое слово
with,
которое применяет миксины к классу -
ключевое слово
mixin class,
которое объявляет класс, пригодный для использования как миксин -
ключевое слово
extends,
которое наследует класс от другого класса -
ключевое слово
implements,
которое реализует интерфейс класса