![]() |
1
9
为了更好的比较和解释为什么特性是首选的,你可以检查 traits paper (pdf) . 本质上,这就是 Lukas Renggli 说: traits成员组成一个类,不会改变它的继承层次。冲突必须由特性用户明确解决。 混音器被线性化为目标类的继承层次结构。如果存在冲突的成员,则声明成员的顺序决定调用哪个成员。这是 脆弱的 因为它隐式地定义了组合的行为,并且类作者必须知道潜在的冲突以及它们将如何影响结果类。 既然混血儿被线性化了,他们就不会受到臭名昭著的 钻石问题 “多重继承。所以它们堆积在一起的脆弱性是另一个问题,我将把它称为 红宝石问题 “,与宝石的比喻保持一致。因为一些奇怪的原因 moose 珍珠不像红宝石那样能说明问题。 |
![]() |
2
9
特征是用构图规则组成的。冲突必须手动解决,一个特性不会意外地重写另一个同名的方法。 混合子是按顺序组成的,因此具有类似于多重继承的脆弱性问题。 |
![]() |
3
8
在Newspeak中,所有的类都是混合类。以下是Gilad Bracha对 Newspeak discussion forum :
|