Rakentajan ylikuormitus Java: Mikä on & Ohjelmaesimerkkejä

Sisällysluettelo:

Anonim

Mikä on Java-konstruktori?

CONSTRUCTOR on erityinen menetelmä, jota käytetään vasta luodun objektin alustamiseen ja jota kutsutaan heti kun muisti on varattu objektille. Sitä voidaan käyttää alustamaan objektit haluttuihin arvoihin tai oletusarvoihin objektin luontihetkellä. Kooderin ei ole pakko kirjoittaa luokan konstruktoria.

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

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

Tässä opetusohjelmassa opit-

  • Rakentajan luomisen säännöt
  • Rakentajan ylikuormitus Java: ssa
  • Rakentajan ketju

Säännöt Java-konstruktorin luomisesta

  1. Sillä on sama nimi kuin luokassa
  2. Sen ei pitäisi palauttaa arvoa, joka ei edes ole mitätön

Esimerkki 1 : Luo ensimmäinen rakentaja Java-sovelluksessa

Vaihe 1) Kirjoita seuraava konstruktoriohjelma Java-editoriin.

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 koota konstruktoriohjelma Java-ohjelmassa ja tarkkaile tulosta.

Tuotos:

Inside ConstructorValue1 === 10Value2 === 20

Rakentajan ylikuormitus Java: ssa

Java-konstruktorin ylikuormitus on tekniikka, jossa luokassa voi olla mikä tahansa määrä konstruktoreita, jotka eroavat parametriluettelosta. Kääntäjä erottaa nämä rakentajat ottamalla huomioon luettelossa olevien parametrien lukumäärän ja tyypin.

Esimerkkejä luokan Tilin kelvollisista rakentajista ovat

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

Esimerkki 2 : Ymmärtää rakentajan ylikuormitus Java: ssa

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 =?. Yritä virheenkorjausvirhe ennen Java-konstruktorin ylikuormituksen seuraavan vaiheen aloittamista

Vaihe 4) Jokaisella luokalla on Java-oletusrakentaja. Oletusarvoinen ylikuormitettu konstruktori Java luokan Demolle on Demo () . Jos et tarjoa tätä rakennuttajaa, kääntäjä luo sen sinulle ja alustaa muuttujat oletusarvoihin. Voit ohittaa tämän oletusrakentajan ja alustaa muuttujat haluamiisi arvoihin esimerkissä 1 esitetyllä tavalla.

Mutta jos määrität parametrisoidun konstruktorin, kuten Demo (int a), ja haluat käyttää oletusrakentaja Java Demoa (), sinun on pakko määrittää se.

Toisin sanoen, jos Java-ylikuormitettu konstruktori ohitetaan ja haluat käyttää oletusrakentaja Java -ohjelmaa, se on määritettävä.

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

Rakentajan ketju

Tarkastellaan skenaariota, jossa lapsi laajentaa perusluokkaa. Aina kun luodaan alaluokan objekti, vanhempien luokan konstruktori kutsutaan ensin. Tätä kutsutaan rakentajan ketjutukseksi.

Esimerkki 3: Rakentajan ketjutuksen ymmärtäminen

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. Konstruktoriketjujen ansiosta kun lapsiluokan DemoChild objekti luodaan, ensin kutsutaan vanhempien luokan konstruktori Demo () ja myöhemmin luodaan lapsen konstruktori DemoChild (). Odotettu tuotos =

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

Vaihe 3) Voit havaita, että emoluokan rakentaja Demo ohitetaan. Entä jos haluat kutsua ohitetun konstruktorin Demoksi (int a) oletusrakentajan Demo () sijaan, kun lapsiobjekti luodaan?

Tällaisissa tapauksissa voit käyttää avainsanaa "super" soittaaksesi vanhempien luokan ohitettuihin rakentajiin.

Syntaksi:-

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

Esimerkki: Jos konstruktorisi on kuin Demo (String Name, int a) , määrität super ("Java", 5) Jos sitä käytetään, avainsanan super on oltava ensimmäinen koodirivi lapsiluokan konstruktorissa.

Vaihe 4) Kommentoi riviä # 26 ja suorita koodi. Tarkkaile lähtöä.

Tuotos:

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