Ответ
Объявление конструктора private имеет следующие последствия:
- Инкапсуляция создания: Невозможно создать экземпляр класса извне оператором
new MyClass(). - Контроль над экземплярами: Создание объектов возможно только внутри самого класса (например, через статические фабричные методы).
- Применение в паттернах проектирования:
- Singleton — гарантия единственного экземпляра.
- Factory Method — скрытие логики создания.
- Utility-класс (только статические методы) — запрет инстанцирования.
Пример Singleton с ленивой инициализацией:
public class Singleton {
private static Singleton instance;
// Private конструктор
private Singleton() {
// Инициализация
}
// Статический фабричный метод
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton(); // Вызов возможен только здесь
}
return instance;
}
}
// Использование:
Singleton obj = Singleton.getInstance(); // Единственный способ получить объект
Важно: Если все конструкторы приватные и нет статических методов, создание экземпляров класса становится невозможным.