Подтвердить что ты не робот

Могу ли я сделать первичный конструктор частным, сохраняя при этом вспомогательные конструкторы в Scala?

Поскольку я намерен использовать только перегруженные конструкторы для общего использования для создания экземпляров класса, я хотел бы сделать основной конструктор закрытым. Возможно ли это в Scala?

4b9b3361

Ответ 1

Да, вы можете:

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

Ответ 2

Да - вы можете определить видимость основного конструктора, указав модификаторы после имени класса, например:

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

И тогда, конечно, вспомогательные конструкторы могут (на самом деле, должны) ссылаться на этот первичный конструктор, но все еще объявляются публичными.