Kaj je konstruktor v Javi?
CONSTRUCTOR je posebna metoda, ki se uporablja za inicializacijo na novo ustvarjenega predmeta in se pokliče takoj po dodelitvi pomnilnika za objekt. Uporablja se lahko za inicializacijo predmetov na želene vrednosti ali privzete vrednosti v času ustvarjanja predmeta. Za kodirnik ni obvezno, da napiše konstruktor za razred.
Če za razred ni na voljo uporabniško definiran konstruktor, prevajalnik inicializira spremenljivke člana na privzete vrednosti.
- številski podatkovni tipi so nastavljeni na 0
- podatkovni tipi char so nastavljeni na ničelni znak ('\ 0')
- referenčne spremenljivke so nastavljene na nič
V tej vadnici boste izvedeli-
- Pravila za izdelavo konstruktorja
- Preobremenitev konstruktorja v Javi
- Veriga konstruktorja
Pravila za ustvarjanje konstruktorja Java
- Ima isto ime kot razred
- Ne sme vrniti vrednosti, ki ni niti nična
Primer 1 : Ustvarite svoj prvi konstruktor v Javi
Korak 1) V urejevalnik Java vnesite naslednji konstruktorski program.
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();}}
Korak 2) Shranite, zaženite in prevedite program konstruktorja v Javi in opazujte rezultate.
Izhod:
Inside ConstructorValue1 === 10Value2 === 20
Preobremenitev konstruktorja v Javi
Java Constructor overloading je tehnika, pri kateri ima lahko razred poljubno število konstruktorjev, ki se razlikujejo v seznamu parametrov. Prevajalnik te konstruktorje razlikuje tako, da upošteva število parametrov na seznamu in njihov tip.
Primeri veljavnih konstruktorjev za razred Account so
Account(int a);Account (int a,int b);Account (String a,int b);
Primer 2 : Razumevanje preobremenitve konstruktorja v Javi
Korak 1) Vnesite kodo v urejevalnik.
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();}}
Korak 2) Shranite, prevedite in zaženite kodo.
3. korak) Napaka =?. Poskusite odpraviti napako, preden nadaljujete z naslednjim korakom preobremenitve konstruktorja Java
4. korak) Vsak razred ima privzeti konstruktor v Javi. Privzeti preobremenjeni konstruktor Java za razred Demo je Demo () . Če tega konstruktorja ne zagotovite, ga prevajalnik ustvari za vas in inicializira spremenljivke na privzete vrednosti. Lahko se odločite za preglasitev tega privzetega konstruktorja in inicializacijo spremenljivk na želene vrednosti, kot je prikazano v primeru 1.
Če pa navedete parametriziran konstruktor, kot je Demo (int a), in želite uporabiti privzeti konstruktor Java Demo (), morate to določiti.
Z drugimi besedami, v primeru, da je vaš preobremenitveni konstruktor v Javi razveljavljen in želite uporabiti privzeti konstruktor Java, je treba to določiti.
5. korak) Vrh komentarja št. 4-8. Shranite, prevedite in zaženite kodo.
Veriga konstruktorja
Razmislite o scenariju, ko osnovni razred podaljša otrok. Kadar koli se ustvari objekt podrejenega razreda, se najprej pokliče konstruktor nadrejenega razreda. To se imenuje veriga konstruktorja.
Primer 3: Razumevanje verige konstruktorjev
Korak 1) Kopirajte naslednjo kodo v urejevalnik.
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);}}
Korak 2) Zaženite kodo. Zaradi ustvarjanja verige konstruktorjev, ko se ustvari objekt podrejenega razreda DemoChild, se najprej prikliče konstruktor Demo () nadrejenega razreda, kasneje pa konstruktor DemoChild () otroka. Pričakovani izhod =
Inside 1st Parent ConstructorInside the Constructor of ChildValue1 === 1Value2 === 2Value1 === 3Value2 === 4
Korak 3) Opazite lahko, da je konstruktor nadrejenega razreda Demo razveljavljen. Kaj če želite poklicati nadomeščeni konstruktor Demo (int a) namesto privzetega konstruktorja Demo (), ko ustvarite svoj podrejeni objekt?
V takih primerih lahko s ključno besedo "super" pokličete prepisane konstruktorje nadrejenega razreda.
Sintaksa: -
super();--or--super(parameter list);
Primer: Če je vaš konstruktor podoben predstavitvi (Ime niza, int a) , boste podali super ("Java", 5) Če je uporabljena, mora biti ključna beseda super prva vrstica kode v konstruktorju otroškega razreda.
Korak 4) Razkličite vrstico št. 26 in zaženite kodo. Upoštevajte izhod.
Izhod:
Inside 2nd Parent ConstructorInside the Constructor of ChildValue1 === 5Value2 === 0Value1 === 3Value2 === 4