Konstruktori ülekoormus Java

⚡ Nutikas kokkuvõte

Konstruktori ülekoormus Java võimaldab klassil deklareerida mitu konstruktorit, mis erinevad parameetrite loendi poolest, pakkudes arendajatele paindlikku objektide initsialiseerimist, puhtamat koodi taaskasutamist this() kaudu ja ennustatavat käitumist alati, kui eksemplari loomisel on vaja vaike- või kohandatud väärtusi.

  • 🏗️ Määratlus: Konstruktori ülekoormus Java lubab samas klassis mitut konstruktorit, mida eristatakse parameetrite arvu, tüübi või järjekorra järgi.
  • 🧩 Paindlikkus: Ülekoormatud konstruktorid initsialiseerivad objekte erinevate argumentide komplektidega.
  • 🔀 Aheldamine: Märksõnad this() ja super() võimaldavad turvalist konstruktori aheldamist.
  • Vaikimisi: Kui parameetriga konstruktor on olemas, tuleb deklareerida vaikevorm.
  • 🧪 Näited: Code Näidised demonstreerivad kehtivaid signatuure ja aheldamise käitumist.

Konstruktori ülekoormus Java

Mis on konstruktori ülekoormamine? Java?

Konstruktori ülekoormus Java on tehnika, mille puhul klass deklareerib mitu konstruktorit, mis erinevad üksteisest parameetrite loendi poolest. Kompilaator eristab neid konstruktoreid parameetrite arvu ja andmetüüpide analüüsimise teel.

Klassi kehtivate konstruktorite näited konto on näidatud allpool:

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

Miks me vajame konstruktori ülekoormamist? Java?

Konstruktori ülekoormus Java parandab paindlikkust ja koodi efektiivsust, lubades klassis mitut konstruktorit, millel kõigil on erinev parameetrite loend.

  • Paindlikkus objektide loomisel: Konstruktori ülelaadimine võimaldab objekte initsialiseerida mitmel viisil, olenevalt parameetrite arvust või tüübist.
  • Code Korduvkasutatavus: Konstruktori loogikat saab taaskasutada, kutsudes ühe konstruktori teisest välja, kasutades see () märksõna.
  • Parem loetavus: Ülekoormatud konstruktorid muudavad koodi intuitiivsemaks, pakkudes spetsiifilisi valikuid erinevate initsialiseerimisvajaduste jaoks.
  • Vaikimisi ja kohandatud lähtestamine: Konstruktori ülelaadimine võimaldab teil hõlpsalt luua nii vaikimisi kui ka kohandatud lähtestatud objekte.

Näide: Konstruktori ülekoormamine Java

Järgnev näide demonstreerib konstruktori ülekoormamist Java kasutades klassi nimega Demo.

Step 1) Tippige kood redaktorisse.

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

Step 2) Salvesta, kompileeri ja käivita kood.

Step 3) Ilmub viga. Proovige viga siluda enne konstruktori ülekoormamise järgmise sammu juurde liikumist. Java.

Step 4) Igal klassil on vaikeklass Konstruktor sisse JavaVaikimisi konstruktor klassi demo is Demo()Kui te seda ei esita, loob kompilaator selle teie eest ja lähtestab muutujad vaikeväärtustele.

Kui aga määrate parameetrilise konstruktori, näiteks Demo(int a) ja soovite kasutada vaikeseadet Demo(), on selle selgesõnaline deklareerimine kohustuslik.

Step 5) Eemalda koodi ridadelt 4–8 kommentaarid, seejärel salvesta, kompileeri ja käivita programm uuesti, et jälgida käitumise muutust.

Konstruktori aheldamine Java

Mõelge stsenaariumile, kus põhiklassi laiendab laps. Alati, kui luuakse alamklassi objekt, kutsutakse esmalt esile ülemklassi konstruktor. Seda nimetatakse Konstruktori aheldamine.

Näide: Konstruktori aheldamise mõistmiseks konstruktori ülekoormuse abil Java

Step 1) Kopeerige järgmine kood redaktorisse.

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

Step 2) Käivita kood. Konstruktori aheldamise tõttu, kui lapseklassi objekt Demolaps luuakse konstruktor Demo() esmalt kutsutakse välja ülemklassi kood ja seejärel konstruktor Demolaps() laps jookseb järgmisena.

Eeldatav väljund:

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

Step 3) Võite märgata, et vanemkonstruktor Demo() töötab vaikimisi. Ülekoormatud konstruktori kutsumiseks Demo(int a) selle asemel kasutage märksõna "Super".

süntaksit:

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

Näide: Kui teie vanemkonstruktor on selline Demo(String Nimi, int a), täpsustate super ("Java”,5). Kui kasutatakse, siis märksõna super peab olema lapseklassi konstruktori esimene koodirida.

Step 4) Eemalda kommentaar realt 26 ja käivita kood. Jälgi väljundit.

Väljund:

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

KKK

Konstruktor on spetsiaalne meetod, mida kasutatakse äsja loodud objekti initsialiseerimiseks ja mida kutsutakse välja kohe pärast mälu eraldamist. Kui kasutaja määratletud konstruktorit ei ole antud, initsialiseerib kompilaator liikmemuutujad vaikeväärtustele, näiteks 0 numbriliste tüüpide puhul ja null viidete puhul.

A Java konstruktoril peab olema sama nimi kui tema klassil ning see ei tohi deklareerida tagastustüüpi, isegi mitte tühist väärtust. Konstruktori ülekoormus Java saavutatakse parameetrite arvu, tüübi või järjekorra muutmisega sama klassi mitme konstruktori deklaratsiooni vahel.

Konstruktori aheldamine toimub siis, kui lapseklassi konstruktor kutsub esile vanemklassi konstruktori, kas kaudselt või otseselt super() abil. See toimib koos konstruktori ülekoormamisega Java et tagada päritud väljade õige initsialiseerimine enne alamklassispetsiifilise loogika käivitamist objekti loomisel.

Konstruktori ülelaadimine (Constructor Overloading) defineerib mitu konstruktorit, mis initsialiseerivad objekte erineval viisil, samas kui meetodite ülelaadimine (Method Overloading) defineerib mitu meetodit, mis teostavad seotud toiminguid erinevate sisenditega. Konstruktorid töötavad objekti loomisel uute objektidega, samas kui ülekoormatud meetodid kutsutakse välja selgesõnaliselt olemasolevatel objektidel või klassidel.

Jah, tehisintellekti kodeerimisassistendid saavad genereerida konstruktori ülekoormuse Java loomuliku keele küsimustest või klassiskeemidest. Nad loovad konstruktori signatuure, delegeerivad loogikat this() abil ja lisavad Javadokumendikommentaarid, mis kiirendab mallide loomist, nõudes samal ajal arendajalt õigsuse ja projektikonventsioonide ülevaatamist.

Tehisintellekti tööriistad saavad analüüsida olemasolevaid klasse ja soovitada konstruktori ülekoormuse refaktoreerimist Java koondatud konstruktorite ühendamise, konstruktorimustrite kasutuselevõtu või nttracinitsialiseerimisabilised. Need toovad esile mitmetähenduslikud ülekoormused, soovitavad parameetrite ümbernimetamist ja viivad konstruktori kujunduse vastavusse selliste mustritega nagu muutmatus ja sõltuvuste süstimine.

Võta see postitus kokku järgmiselt: