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.
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

