【发布时间】:2022-06-11 01:47:09
【问题描述】:
Dart 支持的多重继承机制有哪些?
【问题讨论】:
标签: dart
Dart 支持的多重继承机制有哪些?
【问题讨论】:
标签: dart
不,Dart 不支持多重实现继承。
Dart 具有接口,并且与大多数其他类似语言一样,它具有多个接口继承。
对于实现,只有一个超类链可供类继承成员实现。
Dart 确实有 mixins,它允许多个类使用实现,但不像 mixin 应用程序那样通过继承。
例子:
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
}
这里同一个成员 B.foo 被混合到两个不同的类中,具有两个不同的超类。
每个类C 和D 都只有一个超类链。 C的超类是匿名mixin应用类A1 with B,D的超类是独特的mixin应用类A2 with B。这两个类都包含 mixin 成员 B.foo。
mixin 不是多重继承,但它是 Dart 中最接近的。
【讨论】: