믹스인(Mixin)은 여러 클래스 계층에서 클래스 코드를 재사용하는 방법입니다. 믹스인을 사용하려면 with 키워드 다음에 믹스인 이름을 나열합니다. 아래 코드는 믹스인을 사용하는 예제입니다.
class Musician extends Performer with Musical {
// ···
}
class Maestro extends Person with Musical, Aggressive, Demented {
Maestro(String maestroName) {
name = maestroName;
canConduct = true;
}
}
믹스인을 구현하려면 Object를 확장하고 생성자를 선언하지 않는 클래스를 만듭니다. 믹스인을 일반 클래스로 사용하지 않으려면 class 대신 mixin 키워드를 사용하세요.
때때로 mixin을 사용할 수 있는 타입을 제한하고 싶을 수 있습니다. 이런 경우 on 키워드를 이용해 필요한 슈퍼 클래스를 지정하여 mixin의 사용을 제한할 수 있습니다.
class Musician {
// ...
}
// Musician의 하위 타입만 MusicalPerformer 믹스인을 사용할 수 있습니다.
mixin MusicalPerformer on Musician {
// ...
}
// SingerDancer는 Musician의 서브 클래스이므로 MusicalPerformer 믹스인을 사용할 수 있습니다.
class SingerDancer extends Musician with MusicalPerformer {
// ...
}
슈퍼 클래스 및 믹스인에서 동형의 메서드를 제공하고 있을 경우 마지막에 선언된 믹스인의 구현이 사용됩니다.