在不重复构造函数参数的情况下在Scala中进行子类化的快捷方式?

时间:2009-10-31 10:01:23

标签: scala constructor subclass

假设我有类似这样的课程:

abstract class View(val writer: XMLStreamWriter) {
    // Implementation
}

class TestView(writer: XMLStreamWriter) extends View(writer) {
    // Implementation
}

View的大多数子类都不会采用不同的构造函数参数。我希望能够写出这样的东西:

class TestView extends View {
    // Implementation
}

是否有一些编写子类的快捷方式,因此您不必显式定义构造函数args并将它们传递给超类(因此,如果我更改签名,则不必重新编写所有子类超类)?

2 个答案:

答案 0 :(得分:13)

我担心你自己在那里。构造函数不是继承的,也不是多态的和子类构造函数,而它们必须并且总是为它们的直接超类调用构造函数,不要也不能自动完成,除非有一个零参数构造函数,这是提到的“扩展”子句中的超类名称。

答案 1 :(得分:12)

abstract class View {
    def writer: XMLStreamWriter
    // Implementation
}

class TestView(val writer: XMLStreamWriter) extends View {
    // Implementation
}

这是你在找什么?