Rakentajan ylikuormitus sisään Java

Mikä rakentajan ylikuormitus Java?

Java Konstruktorien ylikuormitus on tekniikka, jossa luokassa voi olla mikä tahansa määrä konstruktoreita, jotka eroavat parametrien listalta. Kääntäjä erottaa nämä konstruktorit ottamalla huomioon luettelossa olevien parametrien määrän ja niiden tyypin.

Esimerkkejä luokan Tilin kelvollisista rakentajista ovat

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

Esimerkki 2: Ymmärtääksesi rakentajan ylikuormituksen Java

Vaihe 1) Kirjoita koodi editoriin.

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

Vaihe 2) Tallenna, käännä ja suorita koodi.

Vaihe 3) Virhe =?. Kokeile ja korjaa virhe ennen kuin siirryt seuraavaan vaiheeseen Java rakentajan ylikuormitus

Vaihe 4) Jokaisella luokalla on oletusarvo Rakentaja mukana Java. Oletuksena ylikuormitettu rakentaja Java varten luokan demo is Demo(). Jos et anna tätä rakentajaa, kääntäjä luo sen puolestasi ja alustaa muuttujat oletusarvoihin. Voit ohittaa tämän oletuskonstruktorin ja alustaa muuttujat halutuiksi arvoiksi esimerkin 1 mukaisesti.

Mutta jos määrität parametroidun rakentajan, kuten Demo(int a), ja haluat käyttää oletuskonstruktoria Java Demo(), sinun on määritettävä se.

Toisin sanoen, jos rakentajasi ylikuormittuu Java on ohitettu, ja haluat käyttää oletuskonstruktoria Java, se on täsmennettävä.

Vaihe 5) Kommentoi rivi # 4-8. Tallenna, käännä ja suorita koodi.

Miksi tarvitsemme Constructor Overloadingin? Java?

Rakentajan ylikuormitus sisään Java sallii useita rakentajia luokassa, joista jokaisella on eri parametriluettelot. Se lisää joustavuutta ja parantaa koodin tehokkuutta.

  • Joustavuus objektien luomisessa: Rakentajan ylikuormituksen avulla voit alustaa objekteja eri tavoin riippuen parametrien lukumäärästä tai tyypistä.
  • Koodin uudelleenkäyttö: Voit käyttää konstruktorilogiikkaa uudelleen kutsumalla yhtä rakentajaa toisesta käyttämällä this()-avainsanaa.
  • Parannettu luettavuus: Ylikuormitetut rakentajat auttavat tekemään koodista intuitiivisemman tarjoamalla erityisiä rakentajavaihtoehtoja erilaisiin alustustarpeisiin.
  • Oletus- ja mukautettu alustus: Rakentajan ylikuormituksen avulla voit luoda helposti sekä oletusarvoisia että mukautettuja alustettuja objekteja.

UKK

Rakentaja on erityinen menetelmä, jota käytetään äskettäin luodun objektin alustamiseen ja jota kutsutaan heti, kun objektille on varattu muisti. Sitä voidaan käyttää objektien alustamiseen haluttuihin arvoihin tai oletusarvoihin objektin luomishetkellä. Koodaajan ei ole pakollista kirjoittaa luokalle konstruktoria.

Jos luokalle ei ole annettu käyttäjän määrittämää konstruktoria, kääntäjä alustaa jäsenmuuttujat oletusarvoihinsa.

  • numeeriset tietotyypit on asetettu arvoon 0
  • char-tietotyypit on asetettu tyhjäksi merkki('\0')
  • viitemuuttujat asetetaan nollaksi

  1. Sillä on sama nimi kuin luokka
  2. Sen ei pitäisi palauttaa arvoa ei edes mitätöidä

Esimerkki 1: Luo ensimmäinen rakentajasi Java

Vaihe 1) Kirjoita seuraava konstruktoriohjelma Java toimittaja.

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

Vaihe 2) Tallenna, suorita ja käännä konstruktoriohjelma sisään Java ja tarkkaile tulosta.

Odotettu tuotos:

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

Harkitse skenaariota, jossa perusluokkaa laajentaa lapsi. Aina kun aliluokan objekti luodaan, emoluokan rakentaja vedetään ensin. Tätä kutsutaan Rakentajan ketjutus.

Esimerkki 3: Ymmärtää rakentajien ketjuttaminen

Vaihe 1) Kopioi seuraava koodi editoriin.

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

Vaihe 2) Suorita koodi. Konstruktoriketjutuksesta johtuen aliluokan DemoChild objektia luotaessa vedetään ensin pääluokan konstruktori Demo() ja myöhemmin luodaan lapsen konstruktori DemoChild().

Odotettu tuotos:

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

Vaihe 3) Voit huomata, että pääluokan Demo konstruktori on ohitettu. Entä jos haluat kutsua ohitettua konstruktoria Demo(int a) oletuskonstruktorin Demo() sijaan, kun aliobjekti luodaan?

Tällaisissa tapauksissa voit käyttää avainsanaa "Super" kutsua yläluokan ohitettuja rakentajia.

Syntaksi:-

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

Esimerkiksi: Jos rakentajasi on kuin Demo(merkkijonon nimi,int a), määrität super("Java”,5). Jos käytetään, avainsana super on oltava ensimmäinen koodirivi lapsiluokan rakentajassa.

Vaihe 4) Poista kommentit rivistä 26 ja suorita koodi. Tarkkaile lähtöä.

lähtö:

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