Cómo implementar el constructor privado en Java



Este artículo le proporcionará un conocimiento detallado y completo de Private Constructor en Java y su uso con ejemplos.

Constructores se utilizan para inicializar el estado de un objeto. De manera similar a los métodos, un constructor también puede contener una colección de declaraciones, que no se pueden llamar más que instrucciones. En este artículo, analizaremos el constructor privado en en el siguiente orden:

Introducción a Constructor en Java

Los constructores se ejecutan en el momento de la creación del objeto. Para comprender mejor el constructor y sus aplicaciones, simplemente piense en una caja como una clase. Se supone que una clase Box tiene algunas variables de clase (es decir, longitud, anchura y altura). Sin embargo, en el momento de crear su objeto (es decir, la caja existe en la memoria de la computadora), puede existir una caja sin un valor definido para sus cantidades dimensionales.





Obviamente no.

Por lo tanto, se introduce un constructor para asignar valores a las variables de clase en la creación del objeto. Esto puede hacerlo explícitamente el programador o el propio Java. Cuando lo hace Java, se denomina constructor predeterminado.



Es imperativo entender que cualquier método, que posee un especificador de acceso proporcionado por el codificador al constructor, que se hace privado, solo se puede acceder dentro de la propia clase.

Constructor privado en Java

Clase Singleton

A partir del nombre mismo, podemos llamar a una clase singleton si restringe el número de objetos de esa clase a uno. Una clase no puede tener más de un objeto en tales casos. Las clases singleton se utilizan exhaustivamente en conceptos como redes y conectividad de bases de datos. La clase Singleton es una clase privada .



Debe haber otra forma de extraer la instancia de la clase y un método de retorno para recuperar el resultado. A continuación se muestra una ilustración adecuada de lo mismo. El primer pictograma muestra el resultado probable donde el valor de “a.x” es igual a 20 y el valor de “b.x” también da como resultado 20. En el código, mientras definimos la clase privada singleton, no se puede acceder a sus constructores fuera de la clase.

Valor de a.x = 20

Valor de b.x = 20

// Programa Java para demostrar la implementación del patrón Singleton // utilizando constructores privados. import java.io. * class MySingleton {instancia estática MySingleton = null public int x = 10 // no se puede acceder al constructor privado fuera de la clase private MySingleton () {} // Método de fábrica para proporcionar a los usuarios instancias estáticas públicas MySingleton getInstance () {if (instancia == null) instancia = new MySingleton () return instancia}} // Clase de controlador class Main {public static void main (String args []) {MySingleton a = MySingleton.getInstance () MySingleton b = MySingleton.getInstance () ax = ax + 10 System.out.println ('Valor de ax =' + ax) System.out.println ('Valor de bx =' + bx)}}

Impacto del constructor privado en Java

Los constructores privados no pueden acceder a clases derivadas de otra clase. Por tanto, tenemos que dar una función pública, que llama al constructor privado. En caso de que el objeto no se inicialice o tengamos que enviar una instancia al objeto si se inicializó. Esto es especialmente útil para los objetos que no se pueden inicializar. Se utiliza un constructor privado en los siguientes casos:

  • Las clases respectivas, que solo tienen miembros y métodos estáticos.
  • Las clases específicas, que solo tienen miembros finales estáticos (constantes) ampliamente utilizados.
  • Incorporar singletons.
  • Incorporar los métodos de fábrica.

Para utilizar enumeraciones, que son de tipo seguro.

Encadenamiento interno de constructores

El encadenamiento interno de constructores es cuando un constructor llama a otro constructor de la misma clase, entonces se puede denominar encadenamiento de constructores. Es nuestro deber usar esta palabra clave para llamar a otro constructor de la clase. En algunos casos, se utiliza para definir algunos valores predeterminados de las variables de clase. También tenga en cuenta que otra llamada al constructor debe ser la primera declaración en el bloque de código.

Además, no debe haber llamadas recursivas, que crearán un bucle infinito. Echemos ahora un vistazo a un ejemplo de un constructor encadenado en un programa java.

paquete com.journaldev.constructor public class Empleado {private int id private String name public Employee () {this ('John Doe', 999) System.out.println ('Default Employee Created')} public Employee (int i) { this ('John Doe', i) System.out.println ('Employee Created with Default Name')} public Employee (String s, int i) {this.id = i this.name = s System.out.println ( 'Empleado creado')} public static void main (String [] args) {Employee emp = new Employee () System.out.println (emp) Employee emp1 = new Employee (10) System.out.println (emp1) Employee emp2 = new Employee ('Pankaj', 20) System.out.println (emp2)} @Override public String toString () {return 'ID =' + id + ', Name =' + name} public int getId () {return id } public void setId (int id) {this.id = id} public String getName () {return name} public void setName (String name) {this.name = name}}

Patrón de diseño de clase Singleton

  • Miembro de nivel de clase (método de inicialización ansiosa):

  1. Primero, cree una instancia estática constante privada de una clase singleton.

  2. Luego, escribe un método estático, que devuelve el objeto de una clase singleton, que creamos como una instancia de miembro de clase.

  3. Es posible marcar un miembro estático como público para acceder directamente a la instancia estática constante.

  4. La clase singleton varía de una clase Java normal en términos de instanciación. En una clase normal, se usa un constructor, pero para la clase singleton usamos el método get Instance ().

  • Miembro de nivel de clase (método de inicialización diferida):

  1. Primero, inicie un constructor como privado.

  2. Luego crea una instancia estática privada de esta clase singleton. Tenga en cuenta que NO debe instanciarlo.

  3. Luego, escriba un método estático, que verifica si el miembro de la instancia estática es nulo e inicia la instancia. Finalmente, devuelve un objeto de la clase singleton.

  • El miembro de nivel de clase (inicialización diferida con método de doble bloqueo):

Considere dos subprocesos que se ejecutan en los que ambos entran en la declaración 'if' simultáneamente mientras la instancia es nula. Donde, un hilo entra en un bloque sincronizado para crear una instancia, mientras que el otro está bloqueado. Como el primer hilo reside en el bloque sincronizado, el hilo de la cola crea otro objeto singleton. Tenga en cuenta que cuando el segundo subproceso ingresa a un bloque sincronizado, no puede verificar si la instancia no es nula.

  • Usando la clase interna anidada (método de carga diferida):

Aquí, se basa en las especificaciones del lenguaje Java (JLS). La máquina virtual Java carga miembros de datos estáticos solo a pedido. Por lo tanto, la clase Singleton se carga primero por la JVM. Por lo tanto, no hay ningún miembro de datos estáticos en una clase.

El titular de la clase Singleton no carga SINGLE_INSTANCE. Cuando invocamos el método getIntance, solo ocurre esto. JLS garantiza la ejecución de la inicialización de la clase. Una disposición para la sincronización explícita en el método getInstance () estático para la carga y la inicialización. A medida que la inicialización crea la variable estática SINGLE_INSTANCE de forma secuencial, todas las invocaciones simultáneas de getInstance () volverán igual sin sobrecarga de sincronización.

  • Utilizando Enums

No todos los enfoques anteriores son soluciones completas en todos los casos. Se pueden crear varias instancias de las implementaciones anteriores utilizando la reflexión. En ambos escenarios, podemos omitir el constructor privado y crear varias instancias. Por lo tanto, un nuevo enfoque es crear una clase singleton utilizando enumeraciones. Como los campos de enumeración son constantes de tiempo compiladas, son instancias de su tipo de enumeración. Se construyen cuando se hace referencia al tipo de enumeración por primera vez.

Con esto, llegamos al final del artículo Constructor privado en Java. Espero que comprenda los constructores privados y cómo se pueden usar en Java.

tutorial web de ruby ​​on rails

Revisar la por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. El curso de formación y certificación Java J2EE y SOA de Edureka está diseñado para estudiantes y profesionales que desean ser desarrolladores de Java. El curso está diseñado para darle una ventaja en la programación de Java y capacitarlo para los conceptos básicos y avanzados de Java junto con varios marcos de Java como Hibernate y Spring.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog de “Tutorial de Java” y nos comunicaremos con usted lo antes posible.