Могу ли я сделать основной конструктор частным, оставив вспомогательные конструкторы общедоступными в Scala? - PullRequest
20 голосов
/ 27 февраля 2012

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

Ответы [ 2 ]

25 голосов
/ 27 февраля 2012

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

class A private (x: Int) {
  def this() = this(42)
}
5 голосов
/ 27 февраля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...