在scala中使用构造函数

时间:2013-04-22 18:18:48

标签: scala

似乎没有理由和/或可能在scala中定义默认构造函数。

基本上,构造函数的概念是否不存在,因为所有与构造函数相关的内容都是在类体中编写的?

class SeriousClass {
    exmpl: Text = new Text

    runMethod()
}

我能想到的唯一原因是除了参数化之外还要定义default constructor,或者除了默认构造函数之外还要定义参数。

class SeriousClass2(param: Param) {
    def this() {
        this(new Param())
    }
}

1 个答案:

答案 0 :(得分:4)

默认构造函数确实存在,是的,它是整个类的主体。而不是写

class SeriousClass2(param: Param) {
    def this() {
        this(new Param())
    }
}

您最好只为默认构造函数提供默认值:

class SeriousClass2(param: Param = new Param()) {

}

这是惯用的,更具可读性。

此外,有时您可能希望禁止来自外部的类实例化。这可以通过指定构造函数范围进行存档:

class PrettyPrivateClass private() {

}