Encadenamiento de constructores en Java con ejemplos e implementación

Publicado: 2023-06-05

En Java, los constructores pueden entenderse como bloques de código que se utilizan para inicializar objetos recién creados. Un constructor es similar a los métodos de instancia en Java. Sin embargo, existe una diferencia crucial entre los constructores y los métodos en Java: mientras que los métodos tienen un tipo de retorno, los constructores no tienen ningún tipo de retorno específico. Los programadores a menudo se refieren a los Constructores como un tipo especial de método en Java.

Los constructores en Java tienen el mismo nombre que la clase y tienen el siguiente aspecto:

clase pública miPrograma{

//Este es el constructor

mi programa(){

}

..

}

Cuando se llama a un constructor desde otro constructor, es cuando se produce el encadenamiento de constructores en Java. Sin embargo, antes de profundizar en el encadenamiento de constructores, primero echemos un vistazo rápido a cómo funcionan los constructores en Java, junto con algunos ejemplos para solidificar su comprensión.

Tabla de contenido

¿Cómo funcionan los constructores en Java?

Para entender cómo funcionan los constructores, veamos un ejemplo. Supongamos que tenemos una clase llamada myProgram. Ahora, cuando creemos el objeto de esta clase, tendremos que escribir la siguiente declaración:

miPrograma obj = new miPrograma()

Como puede ver, la nueva palabra clave utilizada en el ejemplo anterior crea el objeto de myProgram e invoca un constructor para inicializar este objeto recién creado.

Si esto te suena un poco confuso, no te preocupes. Veamos un programa constructor simple en Java para comprender mejor el funcionamiento de los constructores en Java.

Programa Constructor Básico en Java

Mire la siguiente pieza de código Java que usa Constructores:

Prueba de clase pública{

Libro de cuerdas;

//Constructor

Prueba(){

this.book = “Un guardián entre el centeno”;

}

public static void main(String[] args) {

Prueba obj = nueva Prueba();

System.out.println(obj.libro);

}

}

Producción:

Un guardián entre el centeno

En el programa anterior, hemos creado un objeto llamado 'obj' de nuestra clase Programa. Luego, imprimimos el nombre de la variable de instancia de este objeto recién creado. Como puede ver en la salida, la salida es la misma que el valor pasado a 'libro' durante la inicialización del Constructor.

Lo que esto muestra es que en el momento en que se creó el objeto obj, el Constructor se invocó automáticamente. Aquí, usamos la palabra clave 'this' para referirnos al objeto actual. También hay más formas de hacer esto, de las que hablaremos más adelante en el artículo mientras discutimos el encadenamiento de constructores.

Con los conceptos básicos de Constructor en Java resueltos, ¡pasemos a Constructor Chaining en Java y cómo funciona!

Encadenamiento de constructores dentro de una sola clase

Pero, ¿qué es el encadenamiento de constructores en Java que involucra una sola clase?Llamar a un constructor desde otro en la misma clase incluye el encadenamiento de constructores dentro de esa clase. La palabra clave "this" se usa en la sintaxis para el encadenamiento de constructores dentro de la misma clase. Se hace referencia a la instancia de clase actual cuando se usa "esto". Es mejor comprender el uso delencadenamiento de constructores en Java con el ejemplo .

Encadenamiento de constructores desde clases base/padres

Una clase en Java puede derivar de otra clase; la clase derivada se denomina subclase y la clase de la que se deriva se denomina superclase. Una subclase puede tener sus propios constructores e invocar los de su superclase.

Un constructor de superclase usa el término super(), seguido de las entradas requeridas. La palabra clave super() siempre debe estar presente en la primera línea del constructor de la subclase.

Llamada de un constructor diferente, un constructor

Usando la palabra clave this(), un constructor en Java puede llamar a otro constructor de la misma clase. La primera palabra clave en el constructor siempre debe ser la palabra clave this(), que solo se puede usar para llamar a otro constructor del mismo tipo.

Constructor de superclase telefónica

La palabra clave super() en Java permite a los constructores de subclases llamar al constructor de la superclase. La palabra clave super(), que solo se puede usar para llamar al constructor de la superclase de la subclase, siempre debe ser la primera línea del constructor de la subclase.

Los programas de Java pueden comportarse de manera diferente si los constructores están dispuestos en una secuencia diferente. Si una clase tiene muchos constructores y uno de ellos usa la palabra clave this() para llamar a otro constructor, cambiar el orden de los constructores puede cambiar el comportamiento de un programa.

Una forma diferente de encadenar constructores utilizando el bloque Init

El uso de un bloque de inicialización es otro enfoque para el encadenamiento de constructores en Java .Se ejecuta una sección de código conocida como bloque de inicialización.

Fundamentos del encadenamiento de constructores en Java

Cuando llamamos a un Constructor desde otro Constructor de la misma clase, lo que sucede se conoce como Encadenamiento de Constructores. El propósito principal de hacer el encadenamiento de constructores es pasar parámetros a través de un montón de constructores diferentes y solo inicializarlos en un solo lugar. De esta manera, tiene la oportunidad de mantener todas sus inicializaciones en una sola ubicación mientras se pueden proporcionar diferentes constructores a los usuarios.

Si no realiza el encadenamiento de constructores y dos constructores diferentes requieren un parámetro, deberá inicializar ese parámetro dos veces. Además, cada vez que cambie la inicialización, deberá realizar los cambios respectivos en todos los constructores en lugar de solo uno.

Como regla general, siempre debe llamar a Constructores con más argumentos desde Constructores que tienen menos argumentos. También debe tener en cuenta que podemos sobrecargar varios Constructores en la clase. Sin embargo, en el momento en que se crea un objeto, solo se llama a un Constructor en particular. Puede haber bastantes situaciones durante la programación en Java en las que necesitaría llamar a varios constructores entre sí sin crear diferentes objetos. Este mecanismo de invocar un Constructor desde otro constructor y cuando ese Constructor involucrado invoca a otro constructor se conoce como encadenamiento de constructores.

Aprendacursos de softwareen 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.

Hay dos cosas principales que debe tener en cuenta con respecto al encadenamiento de constructores para garantizar la máxima claridad:

  • El objetivo principal del encadenamiento de constructores es mantener el código. La idea es ayudarlo a escribir solo una pieza de código que pueda reutilizarse en su programa. De esta manera, no solo su código estará limpio y legible, sino que también será mucho más fácil de administrar con todas las correcciones y cambios que se realizarán solo en una ubicación en lugar de en todos los Constructores.
  • El Constructor que se ha invocado no crea un objeto separado. En su lugar, utiliza el objeto que se está ejecutando actualmente para invocar a otro constructor. Es como llamar a un método diferente dentro de su Constructor, excepto que también es un constructor.

Como vio en el ejemplo anterior, usamos esta palabra clave para acceder a los parámetros del Constructor. Asimismo, el encadenamiento de constructores también requiere principalmente dos palabras clave. Aquí están esas dos palabras clave:

  • this : su representación de método llama a un constructor de clase actual.
  • super : su representación de método llama a un constructor de superclase padre o super inmediato.

Además, debe tener en cuenta un par de otros términos y definiciones importantes en términos de encadenamiento de constructores en Java:

  • Invocación de constructor: cuando invoca un constructor y ese constructor se invoca con éxito, se conoce como invocación de constructor.
  • Ejecución de Constructor: si al invocar a Constructor, el control comienza a ejecutar las declaraciones en el cuerpo de Constructor. Se conoce como ejecución del constructor.

Reglas clave del encadenamiento de constructores en Java

Con los conceptos básicos de Constructor Chaining resueltos, veamos algunas reglas esenciales para trabajar con Constructor Chaining en Java:

  • this() solo puede llamar a los parámetros que pertenecen al mismo Constructor.
  • super() solo puede llamar al Constructor de superclase inmediato.
  • this() y super() deben ser la primera declaración en el Constructor.
  • This () y super() no se pueden usar dentro del mismo Constructor, ya que ambos individuos deben ser las primeras declaraciones, lo que no es posible en la práctica.
  • No puede agregar this() en todos los Constructores de la misma clase, ya que debe haber al menos un Constructor sin la instrucción this().
  • La invocación y ejecución de Constructores en Java ocurre de manera opuesta. Entonces, si los Constructores fueron llamados en el orden A, B, C, entonces la ejecución será en el orden C, B, A.

Por ejemplo, aquí tenemos dos clases separadas que funcionan sobrecargando diferentes constructores. Queremos ejecutar los constructores en orden 2, 1, 4, 3, 5.

Para ejecutar constructores en orden, necesitamos llamar a los constructores exactamente en orden opuesto como 5, 3, 4, 1, 2, vea el siguiente ejemplo.

padre de la clase

{

Padre()// 1

{

esto(“hola”);

System.out.println(“en padre 0 arg constructor 1”);

}

Padre (mensaje de cadena) // 2

{

System.out.println(“en el constructor principal (cadena) 2”);

}

}

Clase Constructor extiende Padre

{

Constructor()// 3

{

this(10); // llamando al constructor de 5 números

System.out.println(“en Constructor 0 arg constructor 3”);

}

Constructor (mensaje de cadena) // 4

{

super();//llamando al constructor de la clase padre de 1 número

System.out.println(“en Constructor(String msg) arg constructor 4”);

}

Constructor(int i)// 5

{

this(“hola”);//llamando al constructor de 4 números

System.out.println(“en Constructor(int i) constructor 5”);

}

// método principal()

public static void main(String[] args)

{

Constructor cobj = nuevo Constructor(); // llamando al constructor de 3 números

}

}

Producción:

en el constructor Parent(String) 2

en padre 0 arg constructor 1

en Constructor(String msg) arg constructor 4

en Constructor (int i) constructor 5

en Constructor 0 arg constructor 3

Resumiendo todos los conceptos de constructores y encadenamiento de constructores en Java con un ejemplo final:

clase Emp

{

EName de cadena pública;

Ingresos públicos;

dirección de cadena pública;

público Emp ()

{

esto ("Raúl");

}

public Emp (nombre de la cadena)

{

este (nombre, 140035);

}

public Emp(String nombre, int sal)

{

esto(nombre, sal, “Nueva Delhi”);

}

Empleado público (nombre de cadena, sal int, adición de cadena)

{

this.EName=nombre;

this.EEarnings=sal;

esta.dirección=añadir;

}

anular disp() {

System.out.println(“Nombre: “+ENombre);

System.out.println(“Salario: “+Eganancias);

System.out.println(“Dirección: “+dirección);

}

public static void main(String[] args)

{

Empleado obj = nuevo Empleado();

obj.disp();

}

}

Producción:

Nombre del empleado: Raúl

Salario del empleado: 140035

Dirección del empleado: Nueva Delhi

Conclusión

Con eso, llegamos al final de este artículo. Esperamos que esto aclare sus dudas sobre el encadenamiento de constructores en Java y solidifique aún más su comprensión. En upGrad, creemos en ayudar a los estudiantes de todo el mundo a alcanzar su máximo potencial y tener éxito en sus carreras. Nuestros cursos están diseñados teniendo en cuenta tanto a los principiantes como a los profesionales experimentados.

Uno de esos cursos es la Certificación PG vinculada al trabajo de upGrad en ingeniería de software , diseñada específicamente para personas que buscan trabajo por primera vez. ¡Vea el contenido del curso e inscríbase hoy mismo! Aprenda todas las habilidades relevantes de ingeniería de software como Java, DSA, OODAP, JavaScript, MERN, AWS, etc., de expertos de la industria y profesionales líderes.

P: ¿Es posible encadenar más de dos constructores en Java?

Java permite un máximo de dos cadenas de constructores. Puede crear objetos más complejos y reducir la duplicación de código al hacer esto.

P: Cuando un constructor en Java se llama a sí mismo, ¿qué sucede?

Un constructor en Java que se llame a sí mismo dará como resultado un error de desbordamiento de pila y un bucle indefinido.

P: ¿Cómo se ve el constructor predeterminado en Java?

Un constructor predeterminado en Java es uno que no acepta entradas. Si no hay un constructor declarado en la clase, se produce uno automáticamente.