Preťaženie konštruktora v Jave: Čo je & Príklady programov

Obsah:

Anonim

Č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

  1. rovnaký názov ako trieda
  2. 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