为什么Scala特性可以扩展一个类?

时间:2012-10-12 08:20:01

标签: scala traits

我发现Scala中的traits类似于Java中的接口(但Java中的接口扩展了其他接口,它们不扩展类)。我看到了an example on SO about traits usage,其中一个特征扩展了一个类。

这是为了什么目的?为什么traits可以扩展类?

1 个答案:

答案 0 :(得分:69)

是的,他们可以trait延伸classclasses可以扩展trait的内容施加限制 - 即所有classes混合trait - class必须扩展scala> class Foo defined class Foo scala> trait FooTrait extends Foo defined trait FooTrait scala> val good = new Foo with FooTrait good: Foo with FooTrait = $anon$1@773d3f62 scala> class Bar defined class Bar scala> val bad = new Bar with FooTrait <console>:10: error: illegal inheritance; superclass Bar is not a subclass of the superclass Foo of the mixin trait FooTrait val bad = new Bar with FooTrait ^

{{1}}