Частный конструктор в Java: варианты использования, объясненные на примере

Опубликовано: 2021-04-09

Оглавление

Введение

Частный конструктор в Java используется для ограничения создания объектов. Это специальный конструктор экземпляров, используемый в статических классах только для членов. Если конструктор объявлен как частный, то его объекты доступны только внутри объявленного класса. Вы не можете получить доступ к его объектам из-за пределов класса конструктора.

Варианты использования частного конструктора

Доступ к закрытым конструкторам в Java осуществляется только внутри класса. Вы не можете получить доступ к частному конструктору из любого другого класса. Если объект еще не инициализирован, вы можете написать общедоступную функцию для вызова частного инструктора. Если объект уже инициализирован, вы можете вернуть только экземпляр этого объекта. Частный конструктор в Java имеет следующие варианты использования:

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

Синглтон Класс

Частный конструктор в Java используется для создания одноэлементного класса. Одноэлементный класс — это класс в Java, который ограничивает количество объектов объявленного класса до одного. Частный конструктор в Java гарантирует, что за один раз создается только один объект. Он ограничивает экземпляры класса внутри объявленного класса, так что ни один экземпляр класса не может быть создан вне объявленного класса. Вы можете использовать класс singleton в концепции подключения к сети и базе данных.

Пример 1. В следующем примере показано, как закрытый конструктор в Java ограничивает количество объектов в одноэлементном классе.

импортировать java.io.*;

класс newTestClass {

статический объект newTestClass = null;

общественное значение = 20;

частный новыйTestClass () {

}

//мы создали приватный конструктор

статический общедоступный newTestClass displayInstance()

/**

*displayInstance() — это общедоступный метод, который мы будем использовать для создания экземпляра.

* Вызовите этот метод, чтобы получить доступ к этим экземплярам извне класса.

*/

{

если (объект == ноль)

объект = новый newTestClass();

// объект класса singleton создан

возвращаемый объект;

}

}

открытый класс SingletonClass {

public static void main(String args[]) {

экземпляр newTestClass1 = newTestClass.displayInstance();

// отображение экземпляра одноэлементного класса вызовом публичного метода

экземпляр newTestClass2 = newTestClass.displayInstance();

// отображение экземпляра одноэлементного класса вызовом публичного метода

экземпляр1.а = экземпляр1.а + 26;

System.out.println("Созданный экземпляр 1 имеет следующее значение = " + instance1.a);

System.out.println("Созданный экземпляр 2 имеет следующее значение = " + instance2.a);

}

}

Выход

Созданный экземпляр 1 имеет следующее значение = 46

Созданный экземпляр 2 имеет следующее значение = 46

В приведенной выше программе значение экземпляра 2 автоматически обновляется, когда мы обновляем значение объекта instance1. Это наблюдение показывает, что экземпляр 1 и экземпляр 2 относятся к одному и тому же объекту.

Пример 2. В следующем примере показано, как закрытый конструктор в Java гарантирует, что одновременно создается не более одного объекта.

// Java-программа для реализации одноэлементного класса

Импортировать java.io.*;

открытый класс newTestClass {

частный статический newTestClass var=null;

частный новыйTestClass () {

// Доступ к частному конструктору можно получить внутри класса

}

общественный статический newTestClass testObject () {

// Этот метод гарантирует, что за раз создается только один объект

если (вар == ноль) {

var= новый newTestClass();

}

вернуть переменную;

}

публичный недействительный дисплей () {

System.out.println("Это пример частного конструктора, использующего класс Singleton. ");

}

public static void main (String args []) {

newTestClass newObject= newTestClass.testObject();

новыйОбъект.дисплей();

}

}

Выход

Это пример частного конструктора, использующего класс Singleton.

Пример 2: частный конструктор в Java для ограничения количества экземпляров класса.

В этом примере показано, как можно ограничить количество экземпляров класса, объявив конструктор закрытым.

открытый класс limitedInstanceCreationClass {

public static void main(String[] args) {

объект RestrictInstance;

интервал а=1;

в то время как (а <= 20)

{

obj = RestrictInstance.getLimInstance();

а++;

}

}

}

класс RestrictInstance {

открытый статический интервал varCount = 0;

/**

* создать частный конструктор, который увеличивает количество

* переменной varCount после создания каждого экземпляра

*/

частный RestrictInstance () {

варКоунт++;

System.out.println("Создан номер экземпляра " + varCount + ".");

}

открытый статический синхронизированный RestrictInstance getLimInstance() {

если(varCount <5) {

вернуть новый RestrictInstance();

}

System.out.println("Максимальное количество экземпляров достигнуто. Вам больше не разрешено создавать экземпляры.");

Система.gc();

вернуть ноль;

}

/**

*удалить экземпляр и уменьшить количество

* переменной varCount

*/

публичная недействительная финализация ()

{

System.out.println("Экземпляр удален.");

варКоличество–;

}}

Выход

Экземпляр номер 1 создан.

Экземпляр номер 2 создан.

Экземпляр номер 3 создан.

Экземпляр номер 4 создан.

Экземпляр номер 5 создан.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Экземпляр удален.

Экземпляр удален.

Экземпляр удален.

Экземпляр удален.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Экземпляр номер 1 создан.

Экземпляр номер 2 создан.

Экземпляр номер 3 создан.

Экземпляр номер 4 создан.

Экземпляр номер 5 создан.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Достигнуто максимальное количество экземпляров. Вам больше не разрешено создавать экземпляры.

Экземпляр удален.

Экземпляр удален.

Экземпляр удален.

Экземпляр номер 1 создан.

Экземпляр номер 2 создан.

Экземпляр номер 3 создан.

Экземпляр номер 4 создан.

Экземпляр номер 5 создан.

Изучайте онлайн-курсы по программному обеспечению от лучших университетов мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Заключение

Код, использованный в статье, предназначен только для пояснительных целей. Вы можете изменить утверждения, приведенные в примерах, в соответствии с вашими требованиями. В этом блоге мы обсудили, как закрытый конструктор в Java ограничивает количество объектов в одноэлементном классе.

Вы можете попробовать код, чтобы закрепить свои знания конструктора Java . Если вы хотите получить более глубокое понимание Java, ознакомьтесь с курсом upGrad Executive PG Program in Full Stack Development , который предназначен для работающих профессионалов, чтобы получить опыт в этой области.

Что такое конструкторы в программировании?

Конструкторы в программировании — это методы, которые вызываются автоматически при инициализации объекта. Цель конструктора — инициализировать объект. Конструкторы всегда должны быть общедоступными, и они объявляются без какого-либо возвращаемого типа. Конструкторы используются для инициализации объекта и выполнения других задач, которые можно выполнить только один раз. Конструкторы также используются для выполнения инициализации класса, то есть для выполнения задач, создающих класс.

Какие типы конструкторов существуют в Java?

В Java существует пять типов конструкторов. К ним относятся: Конструкторы без аргументов: имеет реализацию по умолчанию, которая выполняется, когда класс загружается в память. Класс, у которого нет конструктора без аргументов, ДОЛЖЕН быть объявлен как окончательный. Конструкторы по умолчанию: этот конструктор создается, когда класс написан на Java, и используется для инициализации всех переменных (атрибутов) класса до их значений по умолчанию (нуля или нуля). Параметризованные конструкторы: этот конструктор используется для инициализации некоторых переменных из некоторых значений. Конструкторы без возвращаемого значения: используются для инициализации некоторых переменных из некоторых значений. Конструкторы с возвращаемым значением: используются для инициализации некоторых переменных из некоторых значений, а также возвращаются со значением.

Что такое частный конструктор в Java?

Приватные конструкторы можно использовать для создания неизменяемого класса. Без использования приватных конструкторов мы можем создавать неизменяемые классы, объявляя класс final и создавая все атрибуты как final (например, private final String name;). Частный конструктор не может быть напрямую вызван клиентскими объектами класса. Их можно вызывать только внутри методов класса (даже приватных). У вас может быть частный конструктор с одним или несколькими параметрами. Вы не можете иметь возвращаемый тип конструктора, который должен быть примитивным логическим. Это может быть строка или класс.