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的簡史]。