Waarom kan een Scala-eigenschap een klasse uitbreiden?

Ik zie dat eigenschappen in Scala vergelijkbaar zijn met interfaces in Java (maar interfaces in Java breiden andere interfaces uit, ze breiden geen klasse uit). Ik zag een voorbeeld op SO over het gebruik van eigenschappenwaarbij een eigenschap een klasse uitbreidt.

Wat is het doel hiervan? Waarom kunnen eigenschappen klassen uitbreiden?


Antwoord 1, autoriteit 100%

Ja dat kan, een traitdie een classuitbreidt, legt een beperking op aan wat classesdie trait– namelijk alle classesdie die traitvermengen, die classmoeten uitbreiden.

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
                              ^

Other episodes