• 混入(Mixin)是一段公共代码。混入有两种声明方式:

    • 将类当作混入 class MixinA {...}

      • 作为 Mixin 的类只能继承自 Object,不能继承其他类
      • 作为 Mixin 的类不能有构造函数
    • 通过 mixin 关键字声明 mixin MixinB {...}
  • 混入(Mixin)可以提高代码复用的效率,普通类可以通过with来使用混入

    • class MyClass with MixinA,MixinB {...}
  • 使用多个混入时,后引入的混入会覆盖之前混入中的重复内容

    • MixinAMixinB 中都有 hello() 方法,MyClass会使用 MixinB 中的方法
class Father {}

//用作混入的类,不能继承除了 Object 意外的其他类
// class MixinA extends Father {
class MixinA {
  String name = 'MixinA';

  // 用作混入的类,不能拥有构造函数;
  // MixinA();

  void printA() {
    print('A');
  }

  void run() {
    print('A is running');
  }
}

mixin MixinB {
  String name = 'MixinB';

  void printB() {
    print('B');
  }

  void run() {
    print('B is running');
  }
}

class MyClass with MixinA, MixinB {}

void main(List<String> args) {
  var c = MyClass();
  c.printA();
  c.printB();

  // 后引入的混入,会覆盖之前混入进去的内容
  print(c.name);
  c.run();
}

标签: none

添加新评论