Dart中 可以使用 mixins 实现类似多继承的功能。

    Dart2.x 中使用 mixins的条件:

    1. 作为 mixins 的类只能继承自 Object , 不能继承其他类
    2. 作为 mixins的类不能有构造函数
    3. 一个类可以 mixins多个 mixins
    4. mixins 不是继承,也不是接口,而是一种全新的特性
    1. class P {
    2. late String name;
    3. P(String this.name);
    4. }
    5. // 注意 , mixins 的类不能够继承其他类, 否则报错
    6. /*
    7. abstract class A extends P {
    8. A(){} // 并且它不能够有 构造函数
    9. printA();
    10. }
    11. */
    12. abstract class A {
    13. printA();
    14. }
    15. abstract class B {
    16. printB();
    17. }
    18. // with 关键词 表示 mixins 功能, 它类似于 多个接口 功能
    19. class C extends P with A,B{
    20. C(String name) : super(name);
    21. @override
    22. printA() {
    23. print('A');
    24. }
    25. @override
    26. printB() {
    27. print('B');
    28. }
    29. }
    30. // 注意: C 类 的顺序决定了 mixins 的同名方法的打印, 假如 A 和 B 都拥有相同的方法, 那么, 上述的C类mixins则会输出 B 的同名方法。
    31. // 还有 , C 类 是 A 或者 B 的超类, 所以都是 true
    32. void main() {
    33. C c = new C('lynn');
    34. print(c is C); // true
    35. print(c is A); // true
    36. print(c is B); // true
    37. }