【问题标题】:Does Dart support multiple inheritance?Dart 是否支持多重继承?
【发布时间】:2022-06-11 01:47:09
【问题描述】:

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

【问题讨论】:

    标签: dart


    【解决方案1】:

    不,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 被混合到两个不同的类中,具有两个不同的超类。

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多