Возможный дубликат:
Какая польза от создания закрытого конструктора в классе?
Когда полезно использовать частный конструктор? А как насчет защищенного?
Возможный дубликат:
Какая польза от создания закрытого конструктора в классе?
Когда полезно использовать частный конструктор? А как насчет защищенного?
это полезно, когда вы хотите предотвратить создание экземпляра объекта извне, например статические фабричные классы, синглтоны и т. д.
Я могу придумать несколько вариантов использования private
:
Совершенно надуманный пример последнего:
private MyClass(int a) {
this.a = a}
public MyClass(int a, String B) {
this(a);
this.b = b;
}
public MyClass(int a, double c) {
this(a);
this.b = Double.toString(c);
}
Аналогичные рассуждения для protected
, он просто расширяет немногих привилегированных до подклассов и соседей по пакету.
Шаблон Singleton использует частный конструктор для управления созданием объекта. Другой вариант использования, с которым вы можете столкнуться, - это когда вы хотели бы иметь специальный конструктор, используемый в модульных тестах (если вы запускаете модульные тесты без фреймворков внедрения зависимостей), поэтому вы не будете делать его общедоступным, но пакет будет защищен и объявить модульный тест в такой же пакет.