在 Dart中 可以使用 mixins 实现类似多继承的功能。
在 Dart2.x 中使用 mixins的条件:
- 作为
mixins的类只能继承自 Object , 不能继承其他类 - 作为
mixins的类不能有构造函数 - 一个类可以
mixins多个mixins类 mixins不是继承,也不是接口,而是一种全新的特性
class P {late String name;P(String this.name);}// 注意 , mixins 的类不能够继承其他类, 否则报错/*abstract class A extends P {A(){} // 并且它不能够有 构造函数printA();}*/abstract class A {printA();}abstract class B {printB();}// with 关键词 表示 mixins 功能, 它类似于 多个接口 功能class C extends P with A,B{C(String name) : super(name);@overrideprintA() {print('A');}@overrideprintB() {print('B');}}// 注意: C 类 的顺序决定了 mixins 的同名方法的打印, 假如 A 和 B 都拥有相同的方法, 那么, 上述的C类mixins则会输出 B 的同名方法。// 还有 , C 类 是 A 或者 B 的超类, 所以都是 truevoid main() {C c = new C('lynn');print(c is C); // trueprint(c is A); // trueprint(c is B); // true}
