Scala trait 的线性化规则详解 -1

多重继承的问题

如你所知,Scala 的 traitmixin 的功能,非常有用、灵活,但会带来一个多重继承的问题(菱形问题)。如下简单代码:

多重继承的问题并不是 Scala 独有,其他语言也都有这样的问题。 Java 8 之前只允许单继承,没有这个问题,但 Java 8 在接口上引入 default方法 之后,也有了同样的问题。对此, Java 8 的解决方案很简单,就是由用户代码指定,如下代码所示:

其中 A.super.f() 就是用户手工指定该使用哪个方法。

Scala 的解决方案

对于多重继承,Scala 给出的解决方案是线性化,术语是 linearization。

什么是 linearization?即是将多重继承转换成单继承,从而解决多重继承带来的问题。

那 Scala 线性化的规则是什么?请看下文Scala trait 的线性化规则详解 -2

一网友评论"Scala trait 的线性化规则详解 -1"

1 坪 /引用 为 "Scala trait 的线性化规则详解 -1"

发表评论

电子邮件地址不会被公开。 必填项已用*标注