CodeGym /Blog Java /Random-ES /Encadenamiento de constructores en Java
Autor
Volodymyr Portianko
Java Engineer at Playtika

Encadenamiento de constructores en Java

Publicado en el grupo Random-ES

¿Qué es el encadenamiento de constructores?

Un constructor en Java es un método específico utilizado en la creación de objetos de una clase. El constructor se invoca cada vez que se crea un objeto de la clase. Se puede utilizar para asignar valores a las propiedades del objeto en el momento de la creación. Puede haber múltiples constructores en una clase Java con diferentes listas de parámetros. El encadenamiento de constructores se usa para invocar diferentes implementaciones de constructores de la misma clase/clase principal en el momento de la creación del objeto.

¿Cómo se implementa el encadenamiento de constructores en Java?

Hay dos formas de encadenar constructores en función de cómo llamar al constructor. Son los siguientes.
  • usando la palabra clave this () – para llamar a los constructores de la misma clase
  • usando la palabra clave super () - para llamar a los constructores de la clase principal
Esto se explica en los siguientes ejemplos.Encadenamiento de constructores en Java - 1

Ejemplo de encadenamiento de constructores n.º 1: los constructores se encadenan con la palabra clave this()

Hemos declarado cuatro constructores para DerivedClass. Uno sin argumentos y los otros tres con diferentes argumentos. Dentro de cada constructor, la palabra clave this() se usa para llamar al siguiente constructor de la misma clase.

package com.tutorialwriting.constchaining;
 
public class DerivedClass{
 
    String firstName;
    String country;
    int age;
 
    public DerivedClass() {
        // calling one argument constructor
        this("Maggie");
    }
 
    public DerivedClass(String firstName) {
        // calling two argument constructor
        this(firstName, 15);
    }
 
    public DerivedClass(String firstName, int age) {
        // calling three argument constructor
        this(firstName, age, "Australia");
    }
 
    public DerivedClass(String firstName, int age, String country) {
        this.firstName = firstName;
        this.age = age;
        this.country = country;
    }
 
    void displayValues() {
        System.out.println("First Name : " + firstName);
        System.out.println("Country : " + country);
        System.out.println("Age : " + age);
    }
 
    public static void main(String args[]) {
        DerivedClass object = new DerivedClass();
        object.displayValues();
    }
}
El resultado de la ejecución.Encadenamiento de constructores en Java - 2

Ejemplo de encadenamiento de constructores n.° 2: los constructores se encadenan mediante la palabra clave super()

Aquí, la clase secundaria llama a los constructores de la clase principal usando la palabra clave super() . BaseClass tiene tres constructores. El constructor sin argumentos llama a uno de los constructores de tres argumentos de BaseClass usando this() .

package com.tutorialwriting.constchaining;
 
public class BaseClass {
 
    public BaseClass() {
        //calling a three argument constructor of the same class
        this("Male", "English", "1989/11/10");
        System.out.println("I'm executed third!!!");
    }
 
    public BaseClass(String firstName, String surname, int idNo) {
        System.out.println("I'm executed first!");
        System.out.println("First name : " + firstName);
        System.out.println("Surname : " + surname);
        System.out.println("ID Number : " + idNo);
    }
 
    public BaseClass(String gender, String nationality, String birthDate) {
        System.out.println("I'm executed second!!");
        System.out.println("Gender : " + gender);
        System.out.println("Nationality : " + nationality);
        System.out.println("Birth Date : " + birthDate);
    }
 
}
DerivedClass tiene dos constructores, cada uno de los cuales llama a los diferentes constructores de la superclase mediante super() .

package com.tutorialwriting.constchaining;
 
public class DerivedClass extends BaseClass {
 
    public DerivedClass() {
        //calling no argument constructor of the super class
        super();
    }
 
    public DerivedClass(String firstName, String surname, int idNo) {
        //calling three argument constructor of the super class
        super(firstName, surname, idNo);
    }
 
    public static void main(String args[]) {
        DerivedClass object2 = new DerivedClass("Paul", "Wilson", 123456);
        DerivedClass object1 = new DerivedClass();
    }
}
El resultado de la ejecución.Encadenamiento de constructores en Java - 3

Llamada de constructor implícita frente a explícita

Java tiene dos formas diferentes de llamar a los constructores: llamadas implícitas y llamadas explícitas.
  • Las llamadas explícitas se refieren a llamar a los constructores explícitamente en el código usando this() o super() .
  • La llamada implícita se refiere a la llamada del constructor sin argumentos de la superclase implícitamente en ausencia de una llamada tan explícita del constructor de la clase secundaria. En otras palabras, el compilador agrega la llamada a super() como la primera línea de cualquiera de los constructores de las clases secundarias si el programador no llama explícitamente a super() en el código.

¿Por qué necesitamos el encadenamiento de constructores?

Hay varios propósitos diferentes de tener una cadena de constructores en Java, como se indica a continuación.
  • Es una forma de acceder a las propiedades de otros constructores oa las propiedades de las clases padre.
  • Al llamar a otros constructores, solo se usa un objeto, que es la instancia actual de la clase. La inicialización ocurre en un solo lugar, pero tenemos el privilegio de llamar a diferentes implementaciones de constructores a través de una cadena. Esto ayuda mucho en la gestión de la memoria y el mantenimiento del código.

Conclusión

En este tutorial, discutimos el encadenamiento de constructores en Java. Los constructores son segmentos de código similares a métodos que se invocan al crear objetos. Una clase Java puede tener cualquier número de constructores con diferentes listas de parámetros. El encadenamiento de constructores es una forma práctica de manejar diferentes inicializaciones con una instancia de una clase. Algunos puntos importantes a tener en cuenta de este tutorial se enumeran a continuación.
  • Si el programador no lo agrega explícitamente al código, el compilador agrega un constructor público sin argumentos a la clase Java. Esto se llama el constructor predeterminado.
  • this() y super() deben escribirse como la primera línea del constructor.
  • this() se usa para llamar a los constructores de la misma clase, mientras que super() se usa para llamar a los constructores de la superclase inmediata.
  • Debe haber al menos un constructor dentro de la clase que no contenga la palabra clave this() .
  • Si no se agrega explícitamente, el compilador agrega una llamada super() sin argumentos a cada constructor de clases secundarias. Esto ayudará a la instanciación de las clases correctamente.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION