Přetížení konstruktoru v Javě: Co je & Příklady programů

Co je konstruktor v Javě?

CONSTRUCTOR je speciální metoda, která se používá k inicializaci nově vytvořeného objektu a je volána těsně po alokování paměti pro objekt. Lze jej použít k inicializaci objektů na požadované hodnoty nebo výchozí hodnoty v době vytváření objektu. Není nutné, aby kodér psal konstruktor pro třídu.

Pokud pro třídu není k dispozici žádný uživatelem definovaný konstruktor, kompilátor inicializuje členské proměnné na své výchozí hodnoty.

  • číselné datové typy jsou nastaveny na 0
  • char datové typy jsou nastaveny na nulový znak ('\ 0')
  • referenční proměnné jsou nastaveny na null

V tomto výukovém programu se naučíte

  • Pravidla pro vytváření konstruktoru
  • Přetížení konstruktoru v Javě
  • Řetězení konstruktérů

Pravidla pro vytváření konstruktoru Java

  1. stejný název jako třída
  2. Nemělo by vrátit hodnotu, která by byla dokonce neplatná

Příklad 1 : Vytvořte si svůj první konstruktor v Javě

Krok 1) Zadejte následující program konstruktoru v editoru 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, spusťte a zkompilujte program konstruktoru v Javě a sledujte výstup.

Výstup:

Inside ConstructorValue1 === 10Value2 === 20

Přetížení konstruktoru v Javě

Přetížení Java Constructor je technika, ve které třída může mít libovolný počet konstruktorů, které se liší v seznamu parametrů. Kompilátor odlišuje tyto konstruktory tím, že zohledňuje počet parametrů v seznamu a jejich typ.

Příklady platných konstruktorů pro účet třídy jsou

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

Příklad 2 : Porozumět přetížení konstruktoru v Javě

Krok 1) Zadejte kód do editoru.

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, zkompilujte a spusťte kód.

Krok 3) Chyba =?. Než přejdete k dalšímu kroku přetížení konstruktoru Java, zkuste chybu ladit

Krok 4) Každá třída má v Javě výchozí konstruktor. Výchozí přetížený konstruktor Java pro třídu Demo je Demo () . V případě, že tento konstruktor neposkytnete, kompilátor jej vytvoří za vás a inicializuje proměnné na výchozí hodnoty. Můžete se rozhodnout přepsat tento výchozí konstruktor a inicializovat proměnné na požadované hodnoty, jak je znázorněno v příkladu 1.

Pokud ale zadáte parametrizovaný konstruktor, jako je Demo (int a), a chcete použít výchozí konstruktor Java Demo (), je jeho zadání povinné.

Jinými slovy, v případě, že je váš přetížitelný konstruktor v Javě přepsán a chcete použít výchozí konstruktor Java, je třeba jej zadat.

Krok 5) Odkomentujte řádek č. 4-8. Uložte, zkompilujte a spusťte kód.

Řetězení konstruktérů

Zvažte scénář, kdy je základní třída rozšířena o dítě. Kdykoli je vytvořen objekt podřízené třídy, je nejprve vyvolán konstruktor nadřazené třídy. Toto se nazývá řetězení konstruktorů.

Příklad 3: Porozumět řetězení konstruktorů

Krok 1) Zkopírujte následující kód do editoru.

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) Spusťte kód. Díky řetězci konstruktorů se při vytvoření objektu podřízené třídy DemoChild nejprve vyvolá konstruktor Demo () nadřazené třídy a později se vytvoří konstruktor DemoChild () podřízeného. Očekávaný výstup =

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

Krok 3) Můžete pozorovat, že konstruktor mateřské třídy Demo je přepsán. Co když chcete při vytvoření podřízeného objektu volat přepsaný konstruktor Demo (int a) namísto výchozího konstruktoru Demo ()?

V takových případech můžete použít klíčové slovo „super“ k volání přepsaných konstruktorů nadřazené třídy.

Syntax:-

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

Příklad: Pokud je váš konstruktor jako Demo (String Name, int a), zadáte super („Java“, 5) Pokud je použito, klíčové slovo super musí být prvním řádkem kódu v konstruktoru podřízené třídy.

Krok 4) Odkomentujte řádek č. 26 a spusťte kód. Sledujte výstup.

Výstup:

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

Zajímavé články...