我可以将主构造函数设为私有,同时在Scala中保持辅助构造函数公开吗?

时间:2012-02-27 09:26:02

标签: scala constructor

因为我打算只重载构造函数以供公共使用来创建类实例,所以我想使主构造函数变为私有。这在Scala中是否可行?

2 个答案:

答案 0 :(得分:25)

是的,你可以:

class A private (x: Int) {
  def this() = this(42)
}

答案 1 :(得分:5)

是 - 您可以通过在类名后指定修饰符来确定主构造函数的可见性,例如:

class Foo private (a: Int, b: String) {
   // ...
}

当然,辅助构造函数仍然(实际上必须)引用此主构造函数,同时仍然被声明为public。