在 Dart 中,有一个神奇的类型,叫作 mixin。github
它和 class 比较相似,但它没有构造函数。bash
经过 mixin,能够扩展一个类的属性和功能,使得类具备 Mixin 类的属性和函数 API。函数
使用 mixin
关键字来定一个 Mixin 类:post
mixin 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');
}
}
}
复制代码
经过 with
关键来使用 Mixin 类扩展一个类。ui
在 Dart 中,一个类支持扩展无限个 Mixin,它们使用 ,
来分隔彼此。spa
class Maestro extends Person
with Musical, Aggressive, Demented {
Maestro(String maestroName) {
name = maestroName;
canConduct = true;
}
}复制代码