logo

¿Qué es el encadenamiento de constructores en Java?

En Java, encadenamiento de constructores es una secuencia de invocación constructores al inicializar un objeto. Se utiliza cuando queremos invocar una serie de constructores, uno tras otro utilizando sólo una instancia. En esta sección, discutiremos encadenamiento de constructores en Java en detalle con ejemplos adecuados. Echemos un vistazo rápido a ¿Qué es un constructor en Java?

Constructor

En Java , un constructor es lo mismo que un método pero la única diferencia es que el constructor tiene el mismo nombre que el nombre de la clase. Se utiliza para crear una instancia de la clase. Se llama automáticamente cuando creamos un objeto de la clase. No tiene tipo de devolución. Recuerde que un constructor no puede ser abstracto , final , sincronizado , y estático . No podemos anular un constructor.

Hay dos tipos de constructores en Java:

  • Constructor predeterminado (también conocido como constructor sin argumentos)
  • Constructor parametrizado

Encadenamiento de constructores

En la cadena de constructores, se llama a un constructor desde otro constructor en la misma clase, este proceso se conoce como encadenamiento de constructores. Ocurre por herencia. Cuando creamos una instancia de una clase derivada, primero se invocan todos los constructores de la clase heredada (clase base), luego se invoca el constructor de la clase que llama (clase derivada).

Podemos lograr el encadenamiento de constructores de dos maneras:

actor ekta kapoor
    Dentro de la misma clase:Si los constructores pertenecen a la misma clase, usamos este De la clase base:Si el constructor pertenece a diferentes clases (clases padre e hijo), usamos el súper palabra clave para llamar al constructor desde la clase base.

Recuerde que cambiar el orden del constructor no afecta la salida.

¿Qué es el encadenamiento de constructores en Java?

La necesidad del encadenamiento de constructores

Supongamos que hay cinco tareas a realizar. Hay dos formas de realizar estas tareas: implementar todas las tareas en un solo constructor o crear tareas separadas en un solo constructor.

C#

Al utilizar el mecanismo de encadenamiento de constructores, podemos implementar múltiples tareas en un solo constructor. Entonces, siempre que nos enfrentemos a este tipo de problemas, debemos utilizar el encadenamiento de constructores. Podemos hacer que el programa sea más legible y comprensible utilizando el encadenamiento de constructores.

Reglas de encadenamiento de constructores

  • Una expresión que utiliza este La palabra clave debe ser la primera línea del constructor.
  • Ordenno importa en el encadenamiento de constructores.
  • Debe existir al menos un constructor que no utilice este

Constructor llamando desde otro constructor

La llamada del constructor se puede realizar de dos formas:

    Usando esta palabra clave():Se utiliza cuando queremos llamar al constructor de la clase actual dentro de la misma clase.Usando la palabra clave super():Se usa cuando queremos llamar al constructor de la superclase desde la clase base.

Nota: En el mismo bloque constructor, no podemos usar this() y super() simultáneamente.

Entendamos estos dos conceptos a través de programas Java.

Ejemplos de encadenamiento de constructores

Llamar al constructor de clase actual

Usamos este() palabra clave si queremos llamar al constructor de la clase actual dentro de la misma clase. El uso de this() es obligatorio porque JVM nunca lo pongas automáticamente como el súper() palabra clave. Tenga en cuenta que this() debe ser la primera línea del constructor. Debe existir al menos un constructor sin esta() palabra clave .

Sintaxis:

 this(); or this(parameters list); 

Por ejemplo:

 this(); this('Javatpoint'); 

Creemos un programa Java y llamemos al constructor de clase actual.

ConstructorChain.java

 public class ConstructorChain { //default constructor ConstructorChain() { this('Javatpoint'); System.out.println('Default constructor called.'); } //parameterized constructor ConstructorChain(String str) { System.out.println('Parameterized constructor called'); } //main method public static void main(String args[]) { //initializes the instance of example class ConstructorChain cc = new ConstructorChain(); } } 

Producción:

ordenar en la lista en java
¿Qué es el encadenamiento de constructores en Java?

En el ejemplo anterior, hemos creado una instancia de la clase sin pasar ningún parámetro. Primero llama al constructor predeterminado y el constructor predeterminado redirige la llamada al parametrizado debido a esto(). Las declaraciones dentro del constructor parametrizado se ejecutan y regresan al constructor predeterminado. Después de eso, se ejecuta el resto de las declaraciones en el constructor predeterminado y el objeto se inicializa exitosamente. La siguiente es la secuencia de llamada del constructor:

 ConstructorChain cc = new ConstructorChain(); -> ConstructorChain() -> ConstructorChain(String str) -> System.out.println() -> ConstructorChain() -> System.out.println() 

Llamando al constructor de superclase

A veces, necesitamos llamar al constructor de la superclase (clase principal) desde la clase secundaria (clase derivada); en tales casos, usamos la palabra clave super() en el constructor de la clase derivada. Es opcional escribir super() porque JVM lo coloca automáticamente. Siempre debe escribirse en la primera línea. Obtenemos un error de sintaxis si intentamos llamar a un constructor de superclase en la clase secundaria.

Sintaxis:

 super(); or super(Parameter List); 

súper(): Llama al constructor predeterminado o sin argumentos de la superclase.

súper (parámetros): Invoca el constructor parametrizado de la superclase.

Recuerde que el constructor de la superclase no se puede heredar en la subclase. Se puede llamar desde el constructor de la subclase utilizando la palabra clave super.

Creemos un programa Java e implementemos el encadenamiento de constructores en una clase heredada.

número a cadena java

ConstructorChaining.java

 //parent class or base class class Demo { //base class default constructor Demo() { this(80, 90); System.out.println('Base class default constructor called'); } //base class parameterized constructor Demo(int x, int y) { System.out.println('Base class parameterized constructor called'); } } //derived class or child class class Prototype extends Demo { //derived class default constructor Prototype() { this('Java', 'Python'); System.out.println('Derived class default constructor called'); } //derived class parameterized constructor Prototype(String str1, String str2) { super(); System.out.println('Derived class parameterized constructor called'); } } public class ConstructorChaining { //main method public static void main(String args[]) { //initializes the instance of example class Prototype my_example = new Prototype(); } } 

Producción:

¿Qué es el encadenamiento de constructores en Java?