在Dart中,类和mixin有什么区别?

5

什么是以下两者之间的区别:

class A {}

class B with A{}

并且

mixin A{}

class B with A{}

?


3
在这种情况下,什么都不做。满足特定限制的类既可以用作类,也可以用作混合类。但这并不适用于一般的类(例如,具有构造函数的类)。为了更好地理解混合类的工作原理,我建议阅读lrn的解释 - jamesdlin
1个回答

5
在Dart中,一个类只能extend一个其他的类。但你可以implementmixin任意多个类。 问题在于,当你extend一个类时,你会继承它所有的属性、方法和构造函数。当你实现一个类时,如果你只是添加了你原本没有的方法/属性,你可以简单的继续你的代码。如果你实现了一个抽象方法,你需要真正地实现它。现在,mixins就像是扩展类一样,它们混合的类也是它们的子类,以及通过extendimplements实现的方式,但它们没有构造函数。
mixins的实际想法是,你可以为任何类添加功能,而不必扩展另一个类。这就是为什么它们通常只做简单的事情。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接