mixin是在多个类层次结构中重用类代码的一种方式。
要使用mixin,请在with关键字后面加上一个或多个mixin名称。下面的例子显示了两个使用mixin的类:
~~~
class Musician extends Performer with Musical {
// ···
}
class Maestro extends Person
with Musical, Aggressive, Demented {
Maestro(String maestroName) {
name = maestroName;
canConduct = true;
}
}
~~~
要实现mixin,创建一个Object的子类,不声明构造函数,也不调用super。例如:
~~~
abstract class Musical {
bool canPlayPiano = false;
bool canCompose = false;
bool canConduct = false;
void entertainMe() {
if (canPlayPiano) {
print('Playing piano');
} else if (canConduct) {
print('Waving hands');
} else {
print('Humming to self');
}
}
}
~~~
>注意:一些对mixin的限制要被删除。有关详细信息,请参见建议的[mixin规范]。
>
有关Dart中mixin的演化的理论介绍,请参阅[Dart中mixin的简史]。