Rakentajan ylikuormitus sisään Java

⚡ Älykäs yhteenveto

Rakentajan ylikuormitus sisään Java mahdollistaa luokan määrittää useita konstruktoreita, jotka eroavat toisistaan ​​parametriluettelon perusteella, mikä tarjoaa kehittäjille joustavan objektien alustuksen, selkeämmän koodin uudelleenkäytön this()-funktion kautta ja ennustettavan toiminnan aina, kun oletusarvoja tai mukautettuja arvoja tarvitaan instanssin luonnissa.

  • 🏗️ Määritelmä: Rakentajan ylikuormitus sisään Java sallii useita konstruktoreita samassa luokassa, jotka erotetaan toisistaan ​​parametrien lukumäärän, tyypin tai järjestyksen perusteella.
  • 🧩 Joustavuus: Ylikuormitetut konstruktorit alustavat objekteja eri argumenttijoukoilla.
  • 🔀 Ketjutus: Avainsanat this() ja super() mahdollistavat turvallisen konstruktoriketjutuksen.
  • Oletukset: Jos parametrisoitu konstruktori on olemassa, oletusmuoto on määriteltävä.
  • 🧪 Esimerkkejä: Code näytteet osoittavat kelvollisia allekirjoituksia ja ketjutuskäyttäytymistä.

Rakentajan ylikuormitus sisään Java

3. Mikä on rakentajan ylikuormitus? Java?

Rakentajan ylikuormitus sisään Java on tekniikka, jossa luokka määrittää useita konstruktoreita, jotka eroavat toisistaan ​​parametriluettelon osalta. Kääntäjä erottaa nämä konstruktorit analysoimalla parametrien lukumäärän ja niiden tietotyypit.

Esimerkkejä luokan kelvollisista konstruktoreista Tili näytetään alla:

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

Miksi tarvitsemme konstruktorin ylikuormitusta Java?

Rakentajan ylikuormitus sisään Java parantaa joustavuutta ja koodin tehokkuutta sallimalla useita konstruktoreita luokassa, joilla jokaisella on eri parametriluettelo.

  • Joustavuus objektien luomisessa: Constructor Overloading antaa sinun alustaa objekteja eri tavoilla parametrien lukumäärästä tai tyypistä riippuen.
  • Code Uudelleenkäytettävyys: Voit käyttää konstruktorilogiikkaa uudelleen kutsumalla yhtä konstruktoria toisesta käyttämällä Tämä() avainsana.
  • Parannettu luettavuus: Ylikuormitetut konstruktorit tekevät koodista intuitiivisempaa tarjoamalla erityisiä vaihtoehtoja erilaisiin alustustarpeisiin.
  • Oletus- ja mukautettu alustus: Constructor Overloadingin avulla voit luoda helposti sekä oletusarvoisia että mukautettuja alustettuja objekteja.

Esimerkki: Rakentajan ylikuormitus Java

Seuraava esimerkki havainnollistaa konstruktorin ylikuormitusta Java käyttämällä luokkaa nimeltä esittely.

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 ilmenee. Yritä korjata virhe ennen kuin siirryt seuraavaan vaiheeseen kohdassa Rakentajan ylikuormitus. Java.

Vaihe 4) Jokaisella luokalla on oletusarvo Rakentaja mukana JavaOletusarvoinen konstruktori kohteelle luokan demo is Demo()Jos et anna sitä, kääntäjä luo sen puolestasi ja alustaa muuttujat oletusarvoihin.

Jos kuitenkin määrität parametrisen konstruktorin, kuten Demo(kokonaisuus a) ja haluat käyttää oletusarvoa Demo(), se on pakko ilmoittaa eksplisiittisesti.

Vaihe 5) Poista kommenttiosoitus koodin riveiltä 4–8, tallenna, käännä ja suorita ohjelma uudelleen havaitaksesi toiminnan muutoksen.

Rakentajan ketjutus sisään Java

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

Esimerkiksi: Ymmärtääksesi konstruktorin ketjutuksen konstruktorin ylikuormituksella Java

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. Konstruktorin ketjutuksen vuoksi, kun lapsiluokan objekti DemoChild luodaan, rakentaja Demo() ensin kutsutaan pääluokan funktiota ja sen konstruktoria DemoLapsi() lapsi juoksee seuraavaksi.

Odotettu tuotos:

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

Vaihe 3) Saatat huomata, että päärakentaja Demo() toimii oletusarvoisesti. Kutsuaksesi ylikuormitettua konstruktoria Demo(kokonaisuus a) käytä sen sijaan avainsanaa "Super".

Syntaksi:

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

Esimerkiksi: Jos pääkonstruktorisi on seuraavanlainen Demo(Merkkijono Nimi, kokonaisluku a), määrität super("Java”,5). Jos käytetään, avainsana Super täytyy olla lapsiluokan konstruktorin ensimmäinen koodirivi.

Vaihe 4) Poista kommenttiosoitus riviltä 26 ja suorita koodi. Tarkkaile tulostetta.

lähtö:

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

UKK

Konstruktori on erityinen menetelmä, jota käytetään vasta luodun objektin alustamiseen. Sitä kutsutaan heti muistin varaamisen jälkeen. Jos käyttäjän määrittämää konstruktoria ei ole annettu, kääntäjä alustaa jäsenmuuttujat oletusarvoihin, kuten 0 numeerisille tyypeille ja null viittauksille.

A Java konstruktorin on oltava samanniminen kuin sen luokka, eikä se saa deklaroida mitään paluuarvotyyppiä, ei edes tyhjää arvoa. Constructor Overloading in Java saavutetaan vaihtelemalla parametrien lukumäärää, tyyppiä tai järjestystä useiden saman luokan konstruktorimääritelmien välillä.

Konstruktorin ketjutus tapahtuu, kun lapsiluokan konstruktori kutsuu pääluokan konstruktoria joko implisiittisesti tai eksplisiittisesti super()-funktion avulla. Se toimii konstruktorin ylikuormituksen rinnalla Java varmistaakseen, että perityt kentät alustetaan oikein ennen kuin alaluokkakohtainen logiikka suoritetaan objektin luonnin aikana.

Constructor Overloading määrittelee useita konstruktoreita, jotka alustavat objekteja eri tavoin, kun taas Method Overloading määrittelee useita metodeja, jotka suorittavat toisiinsa liittyviä toimintoja eri syötteillä. Konstruktorit suoritetaan objektin luonnin aikana uusilla objekteilla, kun taas ylikuormitetut metodit kutsutaan eksplisiittisesti olemassa oleville objekteille tai luokille.

Kyllä, tekoälykoodausavustajat voivat luoda konstruktorin ylikuormituksen Java luonnollisen kielen kehotteista tai luokkakaavioista. Ne tuottavat konstruktorin allekirjoituksia, delegoivat logiikkaa this()-funktiolla ja lisäävät Javadokumenttikommentit, mikä nopeuttaa mallipohjaisten versioiden luomista, mutta vaatii silti kehittäjän tarkistuksen oikeellisuuden ja projektin käytäntöjen varmistamiseksi.

Tekoälytyökalut voivat analysoida olemassa olevia luokkia ja suositella konstruktorin ylikuormituksen uudelleenjärjestelyä Java yhdistämällä tarpeettomia konstruktoreita, ottamalla käyttöön rakentajamalleja tai esim.tracalustusapuohjelmia. Ne korostavat epäselviä ylikuormituksia, ehdottavat parametrien uudelleennimeämistä ja yhdenmukaistavat konstruktorin suunnittelun mallien, kuten muuttumattomuuden ja riippuvuuksien injektoinnin, kanssa.

Tiivistä tämä viesti seuraavasti: