Konstruktør Overbelastning inn Java

Hva Constructor Overloading i Java?

Java Konstruktøroverbelastning er en teknikk der en klasse kan ha et hvilket som helst antall konstruktører som er forskjellige i parameterlisten. Kompilatoren skiller disse konstruktørene ved å ta hensyn til antall parametere i listen og deres type.

Eksempler på gyldige konstruktører for klassekonto er

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

Eksempel 2: For å forstå Constructor Overloading i Java

Trinn 1) Skriv inn koden i editoren.

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();
 }
}

Trinn 2) Lagre, kompiler og kjør koden.

Trinn 3) Feil = ?. Prøv å feilsøke feilen før du fortsetter til neste trinn av Java konstruktør overbelastning

Trinn 4) Hver klasse har en standard Konstruktør i Java. Standard overbelastet konstruktør Java forum klasse Demo is Demo(). Hvis du ikke oppgir denne konstruktøren, oppretter kompilatoren den for deg og initialiserer variablene til standardverdier. Du kan velge å overstyre denne standardkonstruktøren og initialisere variabler til de ønskede verdiene som vist i eksempel 1.

Men hvis du spesifiserer en parametrisert konstruktør som Demo(int a), og vil bruke standardkonstruktøren Java Demo(), det er obligatorisk for deg å spesifisere det.

Med andre ord, i tilfelle din overbelastende konstruktør inn Java er overstyrt, og du vil bruke standardkonstruktøren Java, det må spesifiseres.

Trinn 5) Fjern kommentar linje 4-8. Lagre, kompiler og kjør koden.

Hvorfor trenger vi Constructor Overloading? Java?

Konstruktør overbelaster inn Java tillater flere konstruktører i en klasse, som hver har forskjellige parameterlister. Det øker fleksibiliteten og forbedrer kodeeffektiviteten.

  • Fleksibilitet i objektoppretting: Konstruktøroverbelastning lar deg initialisere objekter på forskjellige måter, avhengig av antall eller type parametere.
  • Gjenbrukbarhet av kode: Du kan gjenbruke konstruktørlogikk ved å kalle en konstruktør fra en annen ved å bruke denne() nøkkelordet.
  • Forbedret lesbarhet: Overbelastede konstruktører bidrar til å gjøre koden mer intuitiv ved å tilby spesifikke konstruktøralternativer for forskjellige initialiseringsbehov.
  • Standard og tilpasset initialisering: Konstruktøroverbelastning lar deg enkelt lage både standard- og tilpassede initialiserte objekter.

Spørsmål og svar

Constructor er en spesiell metode som brukes til å initialisere et nyopprettet objekt og kalles opp like etter at minnet er allokert for objektet. Den kan brukes til å initialisere objektene til ønskede verdier eller standardverdier på tidspunktet for objektoppretting. Det er ikke obligatorisk for koderen å skrive en konstruktør for en klasse.

Hvis ingen brukerdefinert konstruktør er angitt for en klasse, initialiserer kompilatoren medlemsvariablene til standardverdiene.

  • numeriske datatyper er satt til 0
  • char datatyper er satt til null character('\0')
  • referansevariabler er satt til null

  1. Den har samme navn som klassen
  2. Det skal ikke returnere en verdi heller ugyldiggjøre

Eksempel 1: Lag din første konstruktør i Java

Trinn 1) Skriv inn følgende konstruktørprogram Java redaktør.

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();
  }
}

Trinn 2) Lagre, kjør og kompiler konstruktørprogrammet i Java og observer utgangen.

Forventet utgang:

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

Tenk på et scenario der en grunnklasse utvides med et barn. Hver gang et objekt av den underordnede klassen opprettes, blir konstruktøren til den overordnede klassen påkalt først. Dette kalles Konstruktørlenking.

Eksempel 3: For å forstå konstruktørkjeding

Trinn 1) Kopier følgende kode inn i editoren.

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);
   }
}

Trinn 2) Kjør koden. På grunn av konstruktørkjeding, når objektet til underordnet klasse DemoChild opprettes, startes konstruktøren Demo() av ​​den overordnede klassen først, og senere opprettes konstruktøren DemoChild() for barnet.

Forventet utgang:

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

Trinn 3) Du kan observere at konstruktøren til den overordnede klassen Demo er overstyrt. Hva om du vil kalle den overstyrte konstruktøren Demo(int a) i stedet for standardkonstruktøren Demo() når det underordnede objektet er opprettet?

I slike tilfeller kan du bruke søkeordet "super" å kalle overstyrte konstruktører av overordnet klasse.

Syntaks:-

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

Eksempel: Hvis konstruktøren din er som Demo(strengnavn,int a), vil du spesifisere super("Java”,5). Hvis brukt, søkeordet super må være den første kodelinjen i konstruktøren av barneklassen.

Trinn 4) Fjern kommentaren til linje 26 og kjør koden. Observer utgangen.

Utgang:

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