通常以这种方式混合特性:
trait Parent {
def f: Int = -1
}
class Child extends Parent {
override val f: Int = 1
}
虽然,我偶然发现,如果我们只在课堂体内使用常数,我们可以实现同样的方式:
class ChildBodyBefore extends {
override val f: Int = 1
} with Parent
似乎这些Child和ChildBodyBefore定义的工作方式相同:
new Child().f // 1
new ChildBodyBefore().f // 1
为什么第二种形式存在呢?是否存在使用extends { ... }
语法的特定原因?