Dart 支持多重继承吗?

pam*_*let 6 dart

Dart 支持哪些多重继承机制?

lrn*_*lrn 12

不,Dart 不支持多重实现继承。

Dart 具有接口,并且与大多数其他类似语言一样,它具有多个接口继承。

对于实现,只有一个超类链,类可以从中继承成员实现。

Dart 确实有mixins,它允许多个类使用实现,但不像mixin application那样通过继承

例子:

class A {
  String get foo;
}
class A1 implements A {
  String get foo => "A1";
}
class A2 implements A {
  String get foo => "A2";
}
mixin B on A {
  String get foo => "B:${super.foo}";
}
class C extends A1 with B {
  String get foo => "C:${super.foo}";
}
class D extends A2 with B {
  String get foo => "D:${super.foo}";
}
void main() {
  print(C().foo); // C:B:A1
  print(D().foo); // D:B:A2
}
Run Code Online (Sandbox Code Playgroud)

此处,同一成员B.foo混合为两个不同的类,并具有两个不同的超类。

每个类CD只有一个超类链。的超类C是匿名mixin应用程序类A1 with B, 的超类D是独特的mixin应用程序类A2 with B。这两个类都包含 mixin 成员B.foo

Mixins 不是多重继承,但它是 Dart 中最接近的继承。