了解Dart中的“实现”和“使用”

Kru*_*hah 7 oop polymorphism interface mixins dart

我只是在阅读Dart语言规范并探索一种有趣的新语言。正如Dart语言规范所说:Dart具有implicit interfaces。这意味着每个class都是interface。因此,如果我想实现另一个类的某些行为,implements则仅需要子句。

此外,Dart支持mixins。这样我们就可以使用with关键字从另一个类中实现方法。

因此,假设抽象类A定义了方法a():

abstract class A {
  void a();
}
Run Code Online (Sandbox Code Playgroud)

另外两个具体的类B定义方法a(),但不实现类A,例如:

class B {
  void a() {
    print("I am class B");
  }
}
Run Code Online (Sandbox Code Playgroud)

C类使用Mixin B实现A类,例如:

class C extends Object with B implements A {
   ...
}
Run Code Online (Sandbox Code Playgroud)

在这里,我对此几乎没有疑问。如果一个类实现了该接口并且还使用了具有相同方法名的方法实现的mixin;是不是有cycling inheritance可能?的行为是class C什么?是需要实现a()还是将隐式实现mixin B

我只是在学习Dart,而像mixins这样的概念对我来说却并不熟悉。有人可以回答我的问题来帮助我理解吗?

Gün*_*uer 4

Mixin 是一种有限的多重继承。随着C with B,C继承了 的实现void a()。添加implements A不需要做任何其他事情,因为C已经履行了它声称要履行的合同implements A,因为B