logo

Konstruktorji v Javi

  1. Vrste konstruktorjev
    1. Privzeti konstruktor
    2. Parametriziran konstruktor
  2. Preobremenitev konstruktorja
  3. Ali konstruktor vrne kakšno vrednost?
  4. Kopiranje vrednosti enega objekta v drugega
  5. Ali konstruktor izvaja druge naloge namesto inicializacije

notri Java , je konstruktor blok kod, ki je podoben metodi. Pokliče se, ko je primerek razred je ustvarjen. V času klica konstruktorja je pomnilnik za objekt dodeljen v pomnilniku.

Je posebna vrsta metode, ki se uporablja za inicializacijo predmeta.

Vsakič, ko je objekt ustvarjen s ključno besedo new(), se pokliče vsaj en konstruktor.

Pokliče privzeti konstruktor, če v razredu ni na voljo nobenega konstruktorja. V takem primeru prevajalnik Java privzeto zagotovi privzeti konstruktor.

V Javi obstajata dve vrsti konstruktorjev: konstruktor brez argumentov in parametriran konstruktor.

Opomba: Imenuje se konstruktor, ker konstruira vrednosti v času ustvarjanja objekta. Za razred ni treba napisati konstruktorja. To je zato, ker prevajalnik java ustvari privzeti konstruktor, če ga vaš razred nima.

Pravila za ustvarjanje Java konstruktorja

Za konstruktor sta definirani dve pravili.

java pridobiva trenutni datum
  1. Ime konstruktorja mora biti enako imenu njegovega razreda
  2. Konstruktor ne sme imeti eksplicitnega tipa povratka
  3. Konstruktor Java ne more biti abstrakten, statičen, končen in sinhroniziran

Opomba: Lahko uporabimo modifikatorji dostopa med deklariranjem konstruktorja. Nadzoruje ustvarjanje predmeta. Z drugimi besedami, v Javi imamo lahko zasebnega, zaščitenega, javnega ali privzetega konstruktorja.

Vrste konstruktorjev Java

V Javi obstajata dve vrsti konstruktorjev:

  1. Privzeti konstruktor (konstruktor brez argumentov)
  2. Parametrizirani konstruktor
Konstruktorji Java

Privzeti konstruktor Java

Konstruktor se imenuje 'privzeti konstruktor', če nima nobenega parametra.

Sintaksa privzetega konstruktorja:

 (){} 

Primer privzetega konstruktorja

V tem primeru ustvarjamo konstruktor brez argumentov v razredu Bike. Priklican bo v času ustvarjanja objekta.
 //Java Program to create and call a default constructor class Bike1{ //creating a default constructor Bike1(){System.out.println('Bike is created');} //main method public static void main(String args[]){ //calling a default constructor Bike1 b=new Bike1(); } } 
Preizkusite zdaj

Izhod:

 Bike is created 

Pravilo: Če v razredu ni konstruktorja, prevajalnik samodejno ustvari privzeti konstruktor.

Java privzeti konstruktor

V) Kaj je namen privzetega konstruktorja?

Privzeti konstruktor se uporablja za zagotavljanje privzetih vrednosti objektu, kot so 0, nič itd., odvisno od vrste.

Primer privzetega konstruktorja, ki prikaže privzete vrednosti

 //Let us see another example of default constructor //which displays the default values class Student3{ int id; String name; //method to display the value of id and name void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects Student3 s1=new Student3(); Student3 s2=new Student3(); //displaying values of the object s1.display(); s2.display(); } } 
Preizkusite zdaj

Izhod:

 0 null 0 null 

Pojasnilo: V zgornjem razredu ne ustvarjate nobenega konstruktorja, zato vam prevajalnik zagotovi privzeti konstruktor. Tukaj so 0 in ničelne vrednosti podane s privzetim konstruktorjem.


Parametriziran konstruktor Java

Konstruktor, ki ima določeno število parametrov, se imenuje parametrizirani konstruktor.

Zakaj uporabljati parametrizirani konstruktor?

Parametrizirani konstruktor se uporablja za zagotavljanje različnih vrednosti različnim objektom. Vendar pa lahko navedete tudi enake vrednosti.

Primer parametriziranega konstruktorja

V tem primeru smo ustvarili konstruktor razreda Student, ki ima dva parametra. V konstruktorju imamo lahko poljubno število parametrov.

 //Java Program to demonstrate the use of the parameterized constructor. class Student4{ int id; String name; //creating a parameterized constructor Student4(int i,String n){ id = i; name = n; } //method to display the values void display(){System.out.println(id+' '+name);} public static void main(String args[]){ //creating objects and passing values Student4 s1 = new Student4(111,'Karan'); Student4 s2 = new Student4(222,'Aryan'); //calling method to display the values of object s1.display(); s2.display(); } } 
Preizkusite zdaj

Izhod:

 111 Karan 222 Aryan 

Preobremenitev konstruktorja v Javi

V Javi je konstruktor tako kot metoda, vendar brez povratnega tipa. Lahko je tudi preobremenjen kot metode Java.

Konstruktor preobremenitev v Javi je tehnika več kot enega konstruktorja z različnimi seznami parametrov. Razporejeni so tako, da vsak konstruktor opravlja drugačno nalogo. Prevajalnik jih loči po številu parametrov na seznamu in njihovih vrstah.

Primer preobremenitve konstruktorja

 //Java program to overload constructors class Student5{ int id; String name; int age; //creating two arg constructor Student5(int i,String n){ id = i; name = n; } //creating three arg constructor Student5(int i,String n,int a){ id = i; name = n; age=a; } void display(){System.out.println(id+' '+name+' '+age);} public static void main(String args[]){ Student5 s1 = new Student5(111,'Karan'); Student5 s2 = new Student5(222,'Aryan',25); s1.display(); s2.display(); } } 
Preizkusite zdaj

Izhod:

 111 Karan 0 222 Aryan 25 

Razlika med konstruktorjem in metodo v Javi

Med konstruktorji in metodami je veliko razlik. Podani so spodaj.

Konstruktor JavaJava metoda
Konstruktor se uporablja za inicializacijo stanja objekta.Metoda se uporablja za razkrivanje obnašanja predmeta.
Konstruktor ne sme imeti povratnega tipa.Metoda mora imeti povratni tip.
Konstruktor je priklican implicitno.Metoda se prikliče eksplicitno.
Prevajalnik Java ponuja privzeti konstruktor, če v razredu nimate nobenega konstruktorja.Metode v nobenem primeru ne zagotavlja prevajalnik.
Ime konstruktorja mora biti enako imenu razreda.Ime metode je lahko enako kot ime razreda ali pa tudi ne.

Javanski konstruktorji proti metodam

Java Copy Constructor

V Javi ni konstruktorja kopiranja. Vendar pa lahko kopiramo vrednosti iz enega predmeta v drugega, kot je konstruktor kopiranja v C++.

V Javi obstaja veliko načinov za kopiranje vrednosti enega predmeta v drugega. To so:

  • Po konstruktorju
  • Z dodeljevanjem vrednosti enega predmeta drugemu
  • Z metodo clone() razreda Object

V tem primeru bomo kopirali vrednosti enega predmeta v drugega z uporabo konstruktorja Java.

normalizacija v bazi podatkov
 //Java program to initialize the values from one object to another object. class Student6{ int id; String name; //constructor to initialize integer and string Student6(int i,String n){ id = i; name = n; } //constructor to initialize another object Student6(Student6 s){ id = s.id; name =s.name; } void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student6 s1 = new Student6(111,'Karan'); Student6 s2 = new Student6(s1); s1.display(); s2.display(); } } 
Preizkusite zdaj

Izhod:

 111 Karan 111 Karan 

Kopiranje vrednosti brez konstruktorja

Vrednosti enega objekta lahko kopiramo v drugega tako, da vrednosti objektov dodelimo drugemu objektu. V tem primeru ni treba ustvariti konstruktorja.

 class Student7{ int id; String name; Student7(int i,String n){ id = i; name = n; } Student7(){} void display(){System.out.println(id+' '+name);} public static void main(String args[]){ Student7 s1 = new Student7(111,'Karan'); Student7 s2 = new Student7(); s2.id=s1.id; s2.name=s1.name; s1.display(); s2.display(); } } 
Preizkusite zdaj

Izhod:

 111 Karan 111 Karan 

V) Ali konstruktor vrne kakšno vrednost?

Da, to je trenutni primerek razreda (ne morete uporabiti vrnjenega tipa, vendar vrne vrednost).


Ali lahko konstruktor izvaja druge naloge namesto inicializacije?

Da, na primer ustvarjanje predmeta, zagon niti, klicanje metode itd. V konstruktorju lahko izvedete katero koli operacijo, kot jo izvajate v metodi.


Ali obstaja razred Constructor v Javi?

ja


Kaj je namen razreda Constructor?

Java nudi razred Constructor, ki ga je mogoče uporabiti za pridobivanje notranjih informacij o konstruktorju v razredu. Najdete ga v paketu java.lang.reflect.