我知道一个特征可以扩展一个具有空参数构造函数的类:
class Foo
trait Bar extends Foo
但是可以扩展一个构造函数有一些参数的类吗?
class Foo(b: Boolean)
trait Bar extends Foo(true)
有可能实现这一目标吗?看来这是不可能的。但为什么呢?
由于
答案 0 :(得分:3)
是的,有可能,你不能给构造函数参数:
func mapView(mapView: MKMapView!, regionDidChangeAnimated animated: Bool)
但要实例化它,你还需要调用构造函数:
trait Bar extends Foo { ... }
答案 1 :(得分:2)
使arg成为val
似乎有效。
scala> class Foo(val b: Boolean)
defined class Foo
scala> trait Bar extends Foo {override val b = true}
defined trait Bar
如果你使类case class
自动将args转换为val,这也有效。
修改强>
正如@Aleksey指出的那样,这会编译,但它是一个无法实例化的特性,所以,不,它似乎仍然不可能。你必须让Bar成为一个班级。
scala> class Bar extends Foo(false) {println(b)}
defined class Bar
scala> new Bar
false