Dart 如何实现在mixin上使用的类?

Dart 如何实现在mixin上使用的类?,dart,Dart,以下代码来自 class音乐家{} 混音音乐家{}上的音乐表演者 班歌手兼音乐表演者{} 医生说: 在前面的代码中,只有扩展或实现Musitor类的类才能使用mixin MusicalPerformer 但是,如果我执行实现部分,我会得到一个编译错误: class SingerDancer implements Musician with MusicalPerformer {} // Compile error 如果希望实现,应执行以下操作: class SingerPerformer im

以下代码来自

class音乐家{}
混音音乐家{}上的音乐表演者
班歌手兼音乐表演者{}
医生说:

在前面的代码中,只有扩展或实现Musitor类的类才能使用mixin MusicalPerformer

但是,如果我执行
实现
部分,我会得到一个编译错误:

class SingerDancer implements Musician with MusicalPerformer {} // Compile error

如果希望
实现
,应执行以下操作:

class SingerPerformer implements Musician, MusicalPerformer {}
编辑:
musicalperformer
取决于超类
musier
SingerPerformer
不是
Musitor
的子类,但将实现其接口。因此,
SingerPerformer
不能使用mixin,但它也可以实现其接口

第二次编辑: 您也可以这样做:

class NewMusician implements Musician {}
class NewPerformer extends NewMusician with MusicalPerformer {}

当您混入mixin时,mixin应用程序的超类必须实现mixin的
要求。超类是带
之前的类

类SingerDancer通过MusicalPerformer{}
扩展music,因为超类
music
实现了接口
music
,因此您可以对其应用
MusicalPerformer

如果您有课程:

类SingerDancer实现音乐家{…}
然后您可以对其应用
MusicalPerformer

class SingerDancerPerformer=带音乐表演者的歌手dancer;
然而,当你写作时:

class SingerDancer与音乐表演者实现音乐家{}
零件的顺序不对。如果允许的话,这可能意味着

class SingerDancer与MusicalPerformer实现音乐家{}
阿卡

类SingerDancer使用MusicalPerformer实现Musitor{}扩展对象
(如果在使用
之前省略
扩展X
,则它是隐式的
扩展对象
,就像在没有使用
类上省略
扩展X
)。 这里,mixin应用程序的超类不实现
music
。 这也是不允许的,因为类声明中的
implements
不能在
extensed
/
with
之前出现


带有
之前的类必须满足mixin的要求(对于多个mixin,如
用M1扩展X,M2
,M2
之前的类是带有M1的mixin应用程序
X)。

,我想实现类而不是混入。我编辑了答案,但文档注释说了些别的,不是吗?我不明白这是如何回答这个问题的。你能重读一遍吗?谢谢,但是,答案对我来说并不容易理解。(1) “音乐家,实现(平凡的)接口音乐家”——在这句话中,你想说“音乐家,拥有(平凡的)接口音乐家”。(2)
class SingerDancer with MusicalPerformer
是否意味着我已经在实施(
implements
音乐家
课程+1尽管如此!Ad(1),是的,
music
类实现/具有许多接口,可以直接声明,也可以继承。其中一个接口是类自己的接口。因此
music
类实现了
music
接口(从技术上讲,这是两个独立的东西)。Ad(2)
class SingerDancer with MusicalPerformer…
不是有效的声明,因为mixin应用程序
with MusicalPerformer
的超类是隐式
扩展对象
,而
MusticalPerformer
需要一个
musier
作为超类。因为它不是有效的Dart,所以不可能说出它的意思。如果你有
类X扩展了Y和MuscialPerformer{}
,并且它是有效的(意思是
Y
实现了
音乐家
),那么
X
也实现了
音乐家
MuscialPerformer
Y
Object
接口(以及任何其他接口
Y
碰巧有)。