2015-08-21 7 views

Antwort

3

Ja, es ist möglich, man kann einfach nicht Konstruktorargumente geben:

trait Bar extends Foo { ... } 

Aber es instanziiert Sie müssen auch den Konstruktor nennen:

new Foo(false) with Bar 
2

das ARG Making a val zu funktionieren scheint.

scala> class Foo(val b: Boolean) 
defined class Foo 

scala> trait Bar extends Foo {override val b = true} 
defined trait Bar 

Dies funktioniert auch, wenn Sie die Klasse ein case class machen, die automatisch die args um vals dreht.

EDIT

Wie @Aleksey hervorgehoben hat, das kompiliert, aber es ist eine Eigenschaft, die so kann nicht instanziert, nein, es scheint immer noch nicht möglich. Sie müssen Bar eine Klasse machen.

scala> class Bar extends Foo(false) {println(b)} 
defined class Bar 

scala> new Bar 
false 
+0

können Sie instanziiert es? –