class 和 dart 中的 mixin 有什么区别?

What is the difference between class and mixin in dart?

有什么区别:

class A {}

class B with A{}

mixin A{}

class B with A{}

?

在 Dart 中,一个 class 只能 extend 一个 class。但它可以 implementmixin 任意多。 问题是,当您扩展 class 时,您继承了它的所有属性、方法和构造函数。当您实现 class 时,如果您只添加您还没有的 methods/attributes,您可以简单地继续您的代码。如果要实现抽象方法,则需要实际实现它。现在,mixin 就像扩展的 classes,混合它们的 classes,是它们的 child 以及扩展和实现,但它没有构造函数。

mixins 的实际想法是您可以向任何 class 添加功能,而不必扩展另一个 class。这就是为什么他们通常只做简单的事情。