Čo je to Constructor v Jave?
CONSTRUCTOR je špeciálna metóda, ktorá sa používa na inicializáciu novovytvoreného objektu a volá sa ihneď po pridelení pamäte pre objekt. Môže sa použiť na inicializáciu objektov na požadované hodnoty alebo predvolené hodnoty v čase vytvárania objektu. Pre kódera nie je povinné napísať konštruktor pre triedu.
Ak pre triedu nie je k dispozícii žiadny používateľom definovaný konštruktor, kompilátor inicializuje členské premenné na predvolené hodnoty.
- číselné typy údajov sú nastavené na 0
- char dátové typy sú nastavené na nulový znak ('\ 0')
- referenčné premenné sú nastavené na nulu
V tomto návode sa naučíte
- Pravidlá pre vytvorenie konštruktora
- Preťaženie konštruktora v Jave
- Reťazenie konštruktérov
Pravidlá pre vytváranie Java Constructor
- Má rovnaký názov ako trieda
- Nemalo by vrátiť ani neplatnú hodnotu
Príklad 1 : Vytvorte svojho prvého konštruktéra v prostredí Java
Krok 1) Zadajte nasledujúci program konštruktora do editora Java.
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();}}
Krok 2) Uložte, spustite a kompilujte program konštruktora v Jave a sledujte výstup.
Výkon:
Inside ConstructorValue1 === 10Value2 === 20
Preťaženie konštruktora v Jave
Preťaženie Java Constructor je technika, pri ktorej môže mať trieda ľubovoľný počet konštruktorov, ktoré sa líšia v zozname parametrov. Kompilátor rozlišuje týchto konštruktérov zohľadnením počtu parametrov v zozname a ich typu.
Príklady platných konštruktorov pre triedu Účet sú
Account(int a);Account (int a,int b);Account (String a,int b);
Príklad 2 : Pochopenie preťaženia konštruktora v Jave
Krok 1) Zadajte kód do editora.
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();}}
Krok 2) Uložte, kompilujte a spustite kód.
Krok 3) Chyba =?. Skôr ako prejdete k ďalšiemu kroku preťaženia konštruktora Java, skúste chybu vyladiť
Krok 4) Každá trieda má v Jave predvolený konštruktor. Predvolený preťažený konštruktor Java pre triedu Demo je Demo () . Ak tento konštruktor neposkytnete, kompilátor ho vytvorí za vás a inicializuje premenné na predvolené hodnoty. Môžete sa rozhodnúť prepísať tento predvolený konštruktor a inicializovať premenné na požadované hodnoty, ako je uvedené v príklade 1.
Ak ale zadáte parametrizovaný konštruktor ako Demo (int a) a chcete použiť predvolený konštruktor Java Demo (), musíte ho určiť.
Inými slovami, v prípade, že je váš preťažovací konštruktor v Jave prepísaný a chcete použiť predvolený konštruktor Java, je potrebné ho určiť.
Krok 5) Odkomentujte riadok # 4-8. Uložte, kompilujte a spustite kód.
Reťazenie konštruktérov
Zvážte scenár, keď je základná trieda rozšírená o dieťa. Kedykoľvek sa vytvorí objekt podradenej triedy, najskôr sa vyvolá konštruktor nadradenej triedy. Toto sa nazýva Constructor chaining.
Príklad 3: Porozumieť reťazeniu konštruktorov
Krok 1) Skopírujte nasledujúci kód do editora.
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);}}
Krok 2) Spustite kód. Vďaka reťazeniu konštruktorov sa pri vytvorení objektu podradenej triedy DemoChild najskôr vyvolá konštruktor Demo () nadradenej triedy a neskôr sa vytvorí konštruktor DemoChild () podradenej triedy. Očakávaný výstup
Inside 1st Parent ConstructorInside the Constructor of ChildValue1 === 1Value2 === 2Value1 === 3Value2 === 4
Krok 3) Môžete pozorovať, že konštruktér rodičovskej triedy Demo je prepísaný. Čo ak chcete pri vytváraní podradeného objektu volať prepísaný konštruktor Demo (int a) namiesto predvoleného konštruktora Demo ()?
V takýchto prípadoch môžete použiť kľúčové slovo „super“ na volanie prepísaných konštruktorov nadradenej triedy.
Syntax: -
super();--or--super(parameter list);
Príklad: Ak je váš konštruktor ako Demo (String Name, int a) , zadáte super („Java“, 5) Ak sa použije, kľúčové slovo super musí byť prvým riadkom kódu v konštruktore podradenej triedy.
Krok 4) Odkomentujte riadok # 26 a spustite kód. Sledujte výstup.
Výkon:
Inside 2nd Parent ConstructorInside the Constructor of ChildValue1 === 5Value2 === 0Value1 === 3Value2 === 4