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 trait
die een class
uitbreidt, legt een beperking op aan wat classes
die trait
– namelijk alle classes
die die trait
vermengen, die class
moeten 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
^