[Dart] Dart中mixins(混入)功能的简单解释

mixins是dart中的一个重要功能,官方解释可以查看这里。但是这个文档一来有点长,二来有点学术,看起又掉绕。下面我给出一个简单的解释。

解释

假设我们有两个类S, A,现在需要使用mixins定义类T

class T = A with S;

那我们得到的class T是怎么样的呢?假设MA表示A中的所有方法,MS表示S中的所有方法,那么T中的方法集合为

MS U (MA - MS)

即,A中的方法为A和S方法的集合,如果有重复,取S中的。

复杂一点的情况,

class T = B with A, S;

相当于

// 伪代码
class T = (B with A) with S;

例子

1. A with S;
class S {
  a() {print("S.a");}
}

class A {
  a(){print("A.a");}
  b(){print("A.b");}
}

class T = A with S;

main(List args) {
  T t = new T();
  t.a();
  t.b();
}

代码的输出是

S.a
A.b
2. B with A, S;
class S {
  a() {print("S.a");}
}

class A {
  a(){print("A.a");}
  b(){print("A.b");}
}

class B {
  a(){print("B.a");}
  b(){print("B.b");}
  c(){print("B.c ");}
}

class T = B with A, S;

main(List args) {
  T t = new T();
  t.a();
  t.b();
  t.c();
}

代码的输出是

S.a
A.b
B.c 

—– over —–

你可能感兴趣的:(Dart)