最近用到了Mixin
,记录一下使用特性:
Mixin
可以理解为另辟捷径的多继承
实现。与单继承兼容,是继承能力的一种增强工具。
特性1:父类约束
当声明一个 mixin 时, on 后面的类是使用 这个mixin 的父类约束。一个类若是要 with 这个 mixin,则这个类必须继承或实现这个 mixin 的父类约束
需要添加继承父类约束:
class Child extends Super with MyMixin{}
特性2:就远命中原则
当继承多个mixin
,mixin
内重写覆盖了同一个方法,则调用方法时会命中最后with
的mixin
对方方法。
class Super {
void log() {
print("super.log");
}
}
mixin MyMixin on Super {
void log() {
print("MyMixin.log");
}
}
mixin MyMixin2 on Super {
void log() {
print("MyMixin2.log");
}
}
class Child extends Super with MyMixin, MyMixin2 {}
void main() {
new Child().log();
}
打印结果为:
MyMixin2.log
网友评论