Constructor privado en Java: casos de uso explicados con ejemplo

Publicado: 2021-04-09

Tabla de contenido

Introducción

Se utiliza un constructor privado en Java para restringir la creación de objetos. Es un constructor de instancias especial que se usa en clases estáticas solo para miembros. Si un constructor se declara como privado, solo se puede acceder a sus objetos desde dentro de la clase declarada. No puede acceder a sus objetos desde fuera de la clase constructora.

Casos de uso de constructores privados

A los constructores privados en Java solo se accede desde dentro de la clase. No puede acceder a un constructor privado desde ninguna otra clase. Si el objeto aún no se ha inicializado, puede escribir una función pública para llamar al instructor privado. Si el objeto ya está inicializado, solo puede devolver la instancia de ese objeto. Un constructor privado en Java tiene los siguientes casos de uso:

  • Puede usarlo con clases estáticas solo para miembros.
  • Puede usarlo con utilidad estática o clases constantes.
  • Puede usarlo para servir clases singleton.
  • Puede usarlo para asignar un nombre, por ejemplo, creación utilizando métodos de fábrica.
  • Puede usarlo para evitar la subclasificación.

Clase única

El constructor privado en Java se usa para crear una clase singleton. Una clase singleton es una clase en Java que limita el número de objetos de la clase declarada a uno. Un constructor privado en Java garantiza que solo se cree un objeto a la vez. Restringe las instancias de clase dentro de la clase declarada para que no se pueda crear ninguna instancia de clase fuera de la clase declarada. Puede utilizar la clase singleton en los conceptos de conectividad de redes y bases de datos.

Ejemplo 1: El siguiente ejemplo demuestra cómo un constructor privado en Java limita la cantidad de objetos en una clase singleton.

importar java.io.*;

clase nuevaClasePrueba {

objeto estático newTestClass = nulo;

public int a = 20;

nuevaClasePrueba privada() {

}

//hemos creado un constructor privado

static public newTestClass displayInstance()

/**

*displayInstance() es un método público que usaremos para crear una instancia.

*Llame a este método para acceder a estas instancias desde fuera de la clase.

*/

{

si (objeto == nulo)

objeto = nueva nuevaClasePrueba();

// se crea el objeto de clase singleton

devolver objeto;

}

}

clase pública SingletonClass {

public static void main(String args[]) {

newTestClass instancia1 = newTestClass.displayInstance();

//mostrando la instancia de la clase singleton llamando al método público

newTestClass instancia2 = newTestClass.displayInstance();

//mostrando la instancia de la clase singleton llamando al método público

instancia1.a = instancia1.a + 26;

System.out.println(“La instancia 1 creada tiene el siguiente valor = ” + instancia1.a);

System.out.println(“La instancia 2 creada tiene el siguiente valor = ” + instancia2.a);

}

}

Producción

La instancia 1 creada tiene el siguiente valor = 46

La instancia 2 creada tiene el siguiente valor = 46

En el programa anterior, el valor de la instancia 2 se actualiza automáticamente cuando actualizamos el valor del objeto instancia1. Esta observación demuestra que tanto la instancia 1 como la instancia 2 se refieren al mismo objeto.

Ejemplo 2: El siguiente ejemplo demuestra cómo un constructor privado en Java garantiza que no se cree más de un objeto a la vez.

// programa Java para una implementación de clase singleton

Importar java.io.*;

clase pública nuevaClasePrueba {

privado estático newTestClass var=null;

nuevaClasePrueba privada(){

//Se puede acceder a Private Constructor dentro de la clase

}

public static newTestClass testObject(){

// Este método asegura que solo se crea un objeto a la vez

si(var==null){

var= new nuevaClasePrueba();

}

devolver var;

}

visualización de vacío público(){

System.out.println(“Este es un ejemplo de un constructor privado usando una clase Singleton. “);

}

public static void main(String args[]){

nuevaClasePrueba nuevoObjeto= nuevaClasePrueba.objetoprueba();

nuevoObjeto.display();

}

}

Producción

Este es un ejemplo de un constructor privado que usa una clase Singleton.

Ejemplo 2: Constructor privado en Java para limitar el número de instancias de clase.

Este ejemplo demuestra cómo puede limitar el número de instancias de clase declarando un constructor privado.

clase pública restringirInstanceCreationClass {

public static void main(String[] args) {

Restringir instancia obj;

int a=1;

mientras (un <= 20)

{

obj = RestrictInstance.getLimInstance();

un++;

}

}

}

clase RestrictInstance {

public static int varCount = 0;

/**

*crear constructor privado que aumente el conteo

*de la variable varCount después de la creación de cada instancia

*/

instancia de restricción privada () {

varCuenta++;

System.out.println(“Número de instancia ” + varCount + ” se crea.”);

}

público estático sincronizado RestrictInstance getLimInstance() {

si (varCount <5) {

devuelve una nueva instancia de restricción ();

}

System.out.println(“Límite máximo de instancias alcanzado. No puede crear más instancias.”);

Sistema.gc();

devolver nulo;

}

/**

* eliminar la instancia y disminuir el conteo

*de la variable varCount

*/

Finalización de vacío público ()

{

System.out.println(“Se eliminó la instancia”);

varCount–;

}}

Producción

Se crea la instancia número 1.

Se crea la instancia número 2.

Se crea la instancia número 3.

Se crea la instancia número 4.

Se crea la instancia número 5.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se elimina la instancia.

Se elimina la instancia.

Se elimina la instancia.

Se elimina la instancia.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se crea la instancia número 1.

Se crea la instancia número 2.

Se crea la instancia número 3.

Se crea la instancia número 4.

Se crea la instancia número 5.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se alcanzó el límite máximo de instancias. No puede crear más instancias.

Se elimina la instancia.

Se elimina la instancia.

Se elimina la instancia.

Se crea la instancia número 1.

Se crea la instancia número 2.

Se crea la instancia número 3.

Se crea la instancia número 4.

Se crea la instancia número 5.

Aprenda cursos de software en línea de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.

Conclusión

El código utilizado en el artículo es solo para fines explicativos. Puede modificar las declaraciones dadas en los ejemplos según sus requisitos. En este blog, discutimos cómo un constructor privado en Java limita la cantidad de objetos en una clase singleton.

Puede probar el código para fortalecer el conocimiento de su constructor de Java . Si desea obtener una comprensión profunda de Java, consulte el curso UpGrad Executive PG Program en Full Stack Development que está diseñado para que los profesionales que trabajan adquieran experiencia en esta área.

¿Qué son los constructores en programación?

Los constructores en programación son los métodos que se llaman automáticamente cuando se inicializa un objeto. El propósito del constructor es inicializar el objeto. Los constructores siempre deben ser públicos y se declaran sin ningún tipo de devolución. Los constructores se utilizan para inicializar el objeto y realizar otras tareas que solo se pueden realizar una vez. Los constructores también se utilizan para realizar la inicialización de una clase, es decir, para realizar tareas que crean la clase.

¿Cuáles son los tipos de constructores en Java?

Hay cinco tipos de constructores en Java. Ellos son: Constructores sin argumentos: Tiene una implementación por defecto, que se ejecuta cuando la clase se carga en memoria. Una clase que no tiene un constructor sin argumentos DEBE declararse como final. Constructores predeterminados: este constructor se crea cuando la clase se escribe en Java y se usa para inicializar todas las variables de la clase (atributos) a sus valores predeterminados (cero o nulo). Constructores parametrizados: este constructor se utiliza para inicializar algunas variables a partir de algunos valores. Constructores sin valor de retorno: Se utiliza para inicializar algunas variables a partir de algunos valores. Constructores con valor de retorno: se usa para inicializar algunas variables a partir de algunos valores y también regresa con un valor.

¿Qué es un constructor privado en Java?

Los constructores privados se pueden usar para crear una clase inmutable. Sin usar constructores privados, podemos crear clases inmutables declarando la clase final y creando todos los atributos como finales (por ejemplo, nombre de cadena final privado;). Los objetos de cliente de la clase no pueden llamar directamente a un constructor privado. Solo pueden ser llamados internamente por métodos de la clase (incluso privados). Puede tener un constructor privado con uno o más parámetros. No puede hacer que el tipo de retorno del constructor sea booleano primitivo. Puede ser una cadena o una clase.