Могу ли я сделать первичный конструктор частным, сохраняя при этом вспомогательные конструкторы в Scala?
Поскольку я намерен использовать только перегруженные конструкторы для общего использования для создания экземпляров класса, я хотел бы сделать основной конструктор закрытым. Возможно ли это в Scala?
Ответ 1
Да, вы можете:
class A private (x: Int) {
def this() = this(42)
}
Ответ 2
Да - вы можете определить видимость основного конструктора, указав модификаторы после имени класса, например:
class Foo private (a: Int, b: String) {
// ...
}
И тогда, конечно, вспомогательные конструкторы могут (на самом деле, должны) ссылаться на этот первичный конструктор, но все еще объявляются публичными.