Mi a Constructor a Java-ban?
A CONSTRUCTOR egy speciális módszer, amelyet egy újonnan létrehozott objektum inicializálására használnak, és azonnal meghívásra kerül, miután a memóriát lefoglalták az objektum számára. Használható az objektumok inicializálására a kívánt értékekre vagy az alapértelmezett értékekre az objektum létrehozása idején. A kódoló számára nem kötelező konstruktort írni egy osztályhoz.
Ha egy osztályhoz nincs megadva felhasználó által definiált konstruktor, a fordító inicializálja a tagváltozókat az alapértelmezett értékekre.
- a numerikus adattípusok értéke 0
- a char adattípusok null karakterre vannak állítva ('\ 0')
- a referenciaváltozók nullára vannak állítva
Ebben az oktatóanyagban megtanulja-
- A konstruktor létrehozásának szabályai
- Konstruktor túlterhelése Java-ban
- Konstruktor láncolás
A Java Constructor létrehozásának szabályai
- Azt a ugyanaz a neve , mint az osztálynak
- Nem adhat vissza értéket, amely még semmis
1. példa : Készítse el az első konstruktort Java-ban
1. lépés: Írja be a következő szerkesztőprogramot a Java szerkesztőbe.
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();}}
2. lépés: Mentse, futtassa és fordítsa le a konstruktor programot Java-ban, és figyelje meg a kimenetet.
Kimenet:
Inside ConstructorValue1 === 10Value2 === 20
Konstruktor túlterhelése Java-ban
A Java Constructor túlterhelése olyan technika, amelyben egy osztály tetszőleges számú konstruktorral rendelkezhet, amelyek paraméterlistában különböznek. A fordító megkülönbözteti ezeket a konstruktorokat, figyelembe véve a listában szereplő paraméterek számát és típusát.
Példák a Számla osztály érvényes kivitelezőire:
Account(int a);Account (int a,int b);Account (String a,int b);
2. példa : A konstruktor túlterhelésének megértése a Java-ban
1. lépés: Írja be a kódot a szerkesztőbe.
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();}}
2. lépés: Mentse, fordítsa le és futtassa a kódot.
3. lépés) Hiba =?. Próbálja ki a hibakeresést, mielőtt folytatja a Java konstruktor túlterhelésének következő lépését
4. lépés: Minden osztálynak van egy alapértelmezett konstruktora a Java-ban. Az alapértelmezett túlterhelt konstruktor Java a Demo osztályhoz a Demo () . Abban az esetben, ha nem adja meg ezt a konstruktort, a fordító létrehozza az Ön számára, és inicializálja a változókat az alapértelmezett értékekre. Dönthet úgy, hogy felülírja ezt az alapértelmezett konstruktort, és inicializálja a változókat a kívánt értékekre az 1. példában látható módon.
De ha olyan paraméterezett konstruktort ad meg, mint a Demo (int a), és az alapértelmezett Java Demo () konstruktort akarja használni, akkor kötelező megadnia.
Más szavakkal, abban az esetben, ha a Java túlterhelő konstruktorát felülbírálják, és az alapértelmezett Java konstruktort szeretné használni, meg kell adni.
5. lépés : A 4-8. Sor megjegyzés nélküli kommentálása. Mentse, fordítsa le és futtassa a kódot.
Konstruktor láncolás
Vegyünk egy forgatókönyvet, amikor egy alaposztályt egy gyermek bővít. Amikor létrehozzák a gyermekosztály objektumát, először a szülőosztály konstruktorát hívják meg. Ezt hívják Konstruktor láncolásnak.
3. példa: A konstruktor láncolatának megértése
1. lépés: Másolja a következő kódot a szerkesztőbe.
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);}}
2. lépés: Futtassa a kódot. A konstruktor láncolásának köszönhetően a DemoChild gyermekosztály objektumának létrehozásakor először a szülő osztály Demo () konstruktorát hívják meg, majd később létrehozzák a gyermek DemoChild () konstruktorát. Várható kimenet =
Inside 1st Parent ConstructorInside the Constructor of ChildValue1 === 1Value2 === 2Value1 === 3Value2 === 4
3. lépés: Megfigyelheti, hogy a szülő osztály konstruktorát felülbírálják. Mi van, ha a felülbírált konstruktort Demo (int a) -nak akarja hívni az alapértelmezett konstruktor Demo () helyett a gyermekobjektum létrehozásakor?
Ilyen esetekben a "szuper" kulcsszóval felhívhatja a szülőosztály felülbírált konstruktőit.
Szintaxis:-
super();--or--super(parameter list);
Példa: Ha a konstruktorod olyan, mint a Demo (String Name, int a) , akkor megadod a super értéket ("Java", 5). Ha használod, akkor a super kulcsszónak az első kódsornak kell lennie a gyermekosztály konstruktorában.
4. lépés: Kommentelje a 26. sort, és futtassa a kódot. Figyelje meg a kimenetet.
Kimenet:
Inside 2nd Parent ConstructorInside the Constructor of ChildValue1 === 5Value2 === 0Value1 === 3Value2 === 4