Sobrecarga de constructores en Java

ยฟQuรฉ es la sobrecarga de constructores? Java?

Java La sobrecarga de constructores es una tรฉcnica en la que una clase puede tener cualquier nรบmero de constructores que difieren en la lista de parรกmetros. El compilador diferencia estos constructores teniendo en cuenta el nรบmero de parรกmetros de la lista y su tipo.

Ejemplos de constructores vรกlidos para la clase Cuenta son

Account(int a);
Account (int a,int b);
Account (String a,int b);

Ejemplo : Para comprender la sobrecarga de constructores en Java

Paso 1) Escribe el cรณdigo en el editor.

class Demo{
      int  value1;
      int  value2;
      /*Demo(){
       value1 = 10;
       value2 = 20;
       System.out.println("Inside 1st Constructor");
     }*/
     Demo(int a){
      value1 = a;
      System.out.println("Inside 2nd Constructor");
    }
    Demo(int a,int b){
    value1 = a;
    value2 = b;
    System.out.println("Inside 3rd Constructor");
   }
   public void display(){
      System.out.println("Value1 === "+value1);
      System.out.println("Value2 === "+value2);
  }
  public static void main(String args[]){
    Demo d1 = new Demo();
    Demo d2 = new Demo(30);
    Demo d3 = new Demo(30,40);
    d1.display();
    d2.display();
    d3.display();
 }
}

Paso 2) Guarde, compile y ejecute el cรณdigo.

Paso 3) Error=?. Intente depurar el error antes de continuar con el siguiente paso de Java sobrecarga del constructor

Paso 4) Cada clase tiene un valor predeterminado. Constructor en Java. Constructor sobrecargado predeterminado Java demostraciรณn de clase is Manifestaciรณn(). En caso de que no proporcione este constructor, el compilador lo crea por usted e inicializa las variables con los valores predeterminados. Puede optar por anular este constructor predeterminado e inicializar las variables con los valores deseados como se muestra en el Ejemplo 1.

Pero si especifica un constructor parametrizado como Demo(int a) y desea utilizar el constructor predeterminado Java Demo(), es obligatorio que lo especifiques.

En otras palabras, en caso de que su constructor sobrecargado en Java estรก anulado y desea utilizar el constructor predeterminado Java, es necesario especificarlo.

Paso 5) Descomente la lรญnea # 4-8. Guarde, compile y ejecute el cรณdigo.

ยฟPor quรฉ necesitamos una sobrecarga de constructores en Java?

Sobrecarga del constructor en Java Permite mรบltiples constructores en una clase, cada uno con diferentes listas de parรกmetros. Mejora la flexibilidad y la eficiencia del cรณdigo.

  • Flexibilidad en la creaciรณn de objetos: La sobrecarga del constructor le permite inicializar objetos de varias maneras, dependiendo del nรบmero o tipo de parรกmetros.
  • Reutilizaciรณn de cรณdigo: Puede reutilizar la lรณgica del constructor llamando a un constructor desde otro usando la palabra clave this().
  • Legibilidad mejorada: Los constructores sobrecargados ayudan a que el cรณdigo sea mรกs intuitivo al ofrecer opciones de constructor especรญficas para diferentes necesidades de inicializaciรณn.
  • Inicializaciรณn predeterminada y personalizada: La sobrecarga del constructor le permite crear fรกcilmente objetos predeterminados y objetos inicializados personalizados.

Preguntas Frecuentes

Constructor es un mรฉtodo especial que se utiliza para inicializar un objeto reciรฉn creado y se llama justo despuรฉs de que se asigna la memoria para el objeto. Se puede utilizar para inicializar los objetos a los valores deseados o valores predeterminados en el momento de la creaciรณn del objeto. No es obligatorio que el codificador escriba un constructor para una clase.

Si no se proporciona ningรบn constructor definido por el usuario para una clase, el compilador inicializa las variables miembro a sus valores predeterminados.

  • los tipos de datos numรฉricos se establecen en 0
  • Los tipos de datos char se establecen en carรกcter nulo ('\0').
  • las variables de referencia se establecen en nulo

  1. Tiene la mismo nombre como la clase
  2. No deberรญa devolver un valor ni siquiera vacรญo

Ejemplo : Crea tu primer constructor en Java

Paso 1) Escriba el siguiente programa constructor en Java editor.

class Demo{
      int  value1;
      int  value2;
      Demo(){
         value1 = 10;
         value2 = 20;
         System.out.println("Inside Constructor");
     }
 
     public void display(){
        System.out.println("Value1 === "+value1);
        System.out.println("Value2 === "+value2);
    }
 
   public static void main(String args[]){
       Demo d1 = new Demo();
      d1.display();
  }
}

Paso 2) Guarde, ejecute y compile el programa constructor en Java y observe la salida.

Rendimiento esperado:

Inside Constructor
Value1 === 10
Value2 === 20

Considere un escenario en el que un niรฑo amplรญa una clase base. Siempre que se crea un objeto de la clase hija, primero se invoca el constructor de la clase padre. Se llama Encadenamiento de constructores.

Ejemplo 3: Para entender el encadenamiento de constructores

Paso 1) Copie el siguiente cรณdigo en el editor.

class Demo{
   int  value1;
   int  value2;
    Demo(){
      value1 = 1;
      value2 = 2;
      System.out.println("Inside 1st Parent Constructor");
   }
   Demo(int a){
      value1 = a;
      System.out.println("Inside 2nd Parent Constructor");
   }
  public void display(){
     System.out.println("Value1 === "+value1);
     System.out.println("Value2 === "+value2);
  }
  public static void main(String args[]){
     DemoChild d1 = new DemoChild();
     d1.display();
  }
}
class DemoChild extends Demo{
    int value3;
    int value4;
    DemoChild(){
    //super(5);
     value3 = 3;
     value4 = 4;
    System.out.println("Inside the Constructor of Child");
    }
    public void display(){
      System.out.println("Value1 === "+value1);
      System.out.println("Value2 === "+value2);
      System.out.println("Value1 === "+value3);
      System.out.println("Value2 === "+value4);
   }
}

Paso 2) Ejecutar el cรณdigo. Debido al encadenamiento de constructores, cuando se crea el objeto de la clase secundaria DemoChild, primero se invoca el constructor Demo() de la clase principal y luego se crea el constructor DemoChild() de la clase secundaria.

Rendimiento esperado:

Inside 1st Parent Constructor
Inside the Constructor of Child
Value1 === 1
Value2 === 2
Value1 === 3
Value2 === 4

Paso 3) Puede observar que se anula el constructor de la clase principal Demo. ยฟQuรฉ sucede si desea llamar al constructor anulado Demo(int a) en lugar del constructor predeterminado Demo() cuando se crea su objeto secundario?

En tales casos, puede utilizar la palabra clave "sรบper" para llamar a constructores anulados de la clase principal.

Sintaxis:-

super();
--or--
super(parameter list);

Ejemplo: Si tu constructor es como Demostraciรณn (nombre de cadena, int a), usted especificarรก sรบper("Javaโ€,5). Si se utiliza, la palabra clave super necesita ser la primera lรญnea de cรณdigo en el constructor de la clase secundaria.

Paso 4) Descomente la lรญnea n.ยฐ 26 y ejecute el cรณdigo. Observe la salida.

Salida:

Inside 2nd Parent Constructor
Inside the Constructor of Child
Value1 === 5
Value2 === 0
Value1 === 3
Value2 === 4

Resumir este post con: