54 votes

Pourquoi un trait Scala peut-il prolonger une classe?

Je constate que les traits dans Scala sont similaires aux interfaces en Java (mais les interfaces en Java étendent d'autres interfaces, elles n'étendent pas une classe). J'ai vu un exemple sur SO concernant l'utilisation de traits lorsqu'un trait étend une classe.

Quel est le but de ceci? Pourquoi les traits peuvent-ils prolonger les cours?

70voto

adelbertc Points 3117

Oui , ils peuvent, un trait qui s'étend un class met une restriction à ce class es peuvent s'étendre que trait - à savoir, tous class es qui mélangent que trait doit s'étendre que 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
                              ^
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X