Kas ir Java konstruktors?
CONSTRUCTOR ir īpaša metode, ko izmanto, lai inicializētu jaunizveidoto objektu, un tiek izsaukta tūlīt pēc tam, kad objektam ir piešķirta atmiņa. To var izmantot, lai objektu izveidošanas laikā inicializētu objektus līdz vēlamajām vērtībām vai noklusējuma vērtībām. Kodētājam nav obligāti jāraksta konstruktors klasei.
Ja klasei nav paredzēts lietotāja definēts konstruktors, kompilators inicializē dalībnieku mainīgos tā noklusējuma vērtībās.
- ciparu datu tipi ir iestatīti uz 0
- char datu tipiem ir iestatīta nulles rakstzīme ('\ 0')
- atsauces mainīgie ir iestatīti uz nulli
Šajā apmācībā jūs uzzināsiet
- Konstruktora izveides noteikumi
- Konstruktora pārslodze Java
- Konstruktora ķēdes
Java konstruktora izveides noteikumi
- Tam ir tāds pats nosaukums kā klasei
- Tam nevajadzētu atgriezt vērtību, kas pat nav tukša
1. piemērs : izveidojiet savu pirmo konstruktoru Java
1. solis . Java redaktorā ierakstiet šādu konstruktora programmu.
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. solis. Saglabājiet, palaidiet un apkopojiet konstruktora programmu Java un novērojiet izvadi.
Izeja:
Inside ConstructorValue1 === 10Value2 === 20
Konstruktora pārslodze Java
Java Constructor pārslodze ir tehnika, kurā klasē var būt jebkurš konstruktoru skaits, kas atšķiras parametru sarakstā. Kompilators atšķir šos konstruktorus, ņemot vērā parametru skaitu sarakstā un to tipu.
Konta klases derīgu konstruktoru piemēri ir
Account(int a);Account (int a,int b);Account (String a,int b);
2. piemērs : Lai saprastu konstruktora pārslodzi Java
1. solis. Ierakstiet kodu redaktorā.
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. solis. Saglabājiet, kompilējiet un palaidiet kodu.
3. solis) Kļūda =?. Izmēģiniet un atkļūdojiet kļūdu, pirms pāriet uz nākamo Java konstruktora pārslodzes darbību
4. solis. Katrā klasē Java ir noklusējuma konstruktors. Noklusējuma pārslogots konstruktors Java klases demonstrācijai ir Demo () . Gadījumā, ja jūs nenodrošināt šo konstruktoru, kompilators to izveido jums un inicializē mainīgos pēc noklusējuma vērtībām. Jūs varat izvēlēties ignorēt šo noklusējuma konstruktoru un inicializēt mainīgos atbilstoši vēlamajām vērtībām, kā parādīts 1. piemērā.
Bet, ja jūs norādāt parametrizētu konstruktoru, piemēram, Demo (int a), un vēlaties izmantot noklusējuma konstruktoru Java Demo (), jums tas ir obligāti jānorāda.
Citiem vārdiem sakot, ja jūsu Java pārslogošanas konstruktors tiek ignorēts un vēlaties izmantot noklusējuma konstruktoru Java, tas ir jānorāda.
5. solis. Noņemiet komentāru rindā Nr. 4-8. Saglabājiet, kompilējiet un palaidiet kodu.
Konstruktora ķēdes
Apsveriet scenāriju, kad bāzes klasi pagarina bērns. Ikreiz, kad tiek izveidots bērnu klases objekts, vispirms tiek izsaukts vecāku klases konstruktors. To sauc par konstruktora ķēdi.
3. piemērs: lai saprastu konstruktoru ķēdi
1. darbība. Nokopējiet šo kodu redaktorā.
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. solis. Palaidiet kodu. Sakarā ar konstruktoru ķēdēšanu, kad tiek izveidots bērnu klases DemoChild objekts, vispirms tiek izsaukts vecāku klases konstruktors Demo () un vēlāk tiek izveidots bērna konstruktors DemoChild (). Paredzamais iznākums =
Inside 1st Parent ConstructorInside the Constructor of ChildValue1 === 1Value2 === 2Value1 === 3Value2 === 4
3. solis. Varat novērot, ka vecāku klases konstruktors Demo tiek ignorēts. Ko darīt, ja vēlaties izsaukt ignorēto konstruktoru Demo (int a), nevis noklusējuma konstruktoru Demo (), kad tiek izveidots bērna objekts?
Šādos gadījumos varat izmantot atslēgvārdu "super", lai izsauktu vecāku klases ignorētus konstruktorus.
Sintakse: -
super();--or--super(parameter list);
Piemērs: Ja jūsu konstruktors ir līdzīgs demonstrācijai (virknes nosaukums, int a), jūs norādīsit super ("Java", 5). Ja to lieto, atslēgvārdam super jābūt pirmajai koda rindai bērnu klases konstruktorā.
4. solis. Noņemiet komentāru no 26. rindas un palaidiet kodu. Ievērojiet izvadi.
Izeja:
Inside 2nd Parent ConstructorInside the Constructor of ChildValue1 === 5Value2 === 0Value1 === 3Value2 === 4