logo

Konstruktori u Javi

  1. Vrste konstruktora
    1. Zadani konstruktor
    2. Parametrirani konstruktor
  2. Preopterećenje konstruktora
  3. Vraća li konstruktor neku vrijednost?
  4. Kopiranje vrijednosti jednog objekta u drugi
  5. Izvodi li konstruktor druge zadatke umjesto inicijalizacije

U Java , konstruktor je blok kodova sličan metodi. Poziva se kada se pojavi instanca razreda se stvara. U trenutku pozivanja konstruktora, memorija za objekt se dodjeljuje u memoriji.

To je posebna vrsta metode koja se koristi za inicijalizaciju objekta.

Svaki put kad se objekt kreira pomoću ključne riječi new(), poziva se barem jedan konstruktor.

Poziva zadani konstruktor ako u klasi nema dostupnog konstruktora. U tom slučaju, Java prevoditelj prema zadanim postavkama daje zadani konstruktor.

U Javi postoje dvije vrste konstruktora: konstruktor bez argumenata i parametrizirani konstruktor.

Bilješka: Naziva se konstruktor jer konstruira vrijednosti u trenutku stvaranja objekta. Nije potrebno pisati konstruktor za klasu. To je zato što java prevoditelj stvara zadani konstruktor ako ga vaša klasa nema.

Pravila za izradu Java konstruktora

Za konstruktor su definirana dva pravila.

metoda podniza u Javi
  1. Naziv konstruktora mora biti isti kao naziv njegove klase
  2. Konstruktor ne smije imati eksplicitni povratni tip
  3. Java konstruktor ne može biti apstraktan, statičan, konačan i sinkroniziran

Napomena: Možemo koristiti modifikatori pristupa prilikom deklaracije konstruktora. Kontrolira stvaranje objekta. Drugim riječima, u Javi možemo imati privatni, zaštićeni, javni ili zadani konstruktor.

Vrste Java konstruktora

U Javi postoje dvije vrste konstruktora:

  1. Zadani konstruktor (konstruktor bez argumenata)
  2. Parametrizirani konstruktor
Java konstruktori

Java zadani konstruktor

Konstruktor se naziva 'Default Constructor' kada nema nijedan parametar.

Sintaksa zadanog konstruktora:

 (){} 

Primjer zadanog konstruktora

U ovom primjeru stvaramo konstruktor bez argumenata u klasi Bicikl. Pozvat će se u trenutku stvaranja 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(); } } 
Testirajte sada

Izlaz:

 Bike is created 

Pravilo: Ako u klasi nema konstruktora, prevodilac automatski stvara zadani konstruktor.

Java zadani konstruktor

P) Koja je svrha zadanog konstruktora?

Zadani konstruktor koristi se za pružanje zadanih vrijednosti objektu kao što su 0, null itd., ovisno o vrsti.

Primjer zadanog konstruktora koji prikazuje zadane vrijednosti

 //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(); } } 
Testirajte sada

Izlaz:

 0 null 0 null 

Obrazloženje: U gornjoj klasi ne stvarate nikakav konstruktor pa vam kompajler daje zadani konstruktor. Ovdje su vrijednosti 0 i null navedene prema zadanom konstruktoru.


Java parametrizirani konstruktor

Konstruktor koji ima određeni broj parametara naziva se parametrizirani konstruktor.

Zašto koristiti parametrizirani konstruktor?

Parametrizirani konstruktor koristi se za pružanje različitih vrijednosti različitim objektima. Međutim, možete također dati iste vrijednosti.

Primjer parametriziranog konstruktora

U ovom primjeru kreirali smo konstruktor klase Student koji ima dva parametra. U konstruktoru možemo imati bilo koji broj parametara.

 //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(); } } 
Testirajte sada

Izlaz:

 111 Karan 222 Aryan 

Preopterećenje konstruktora u Javi

U Javi, konstruktor je poput metode, ali bez vrste povrata. Također se može preopteretiti poput Java metoda.

Konstruktor preopterećenje u Javi je tehnika posjedovanja više od jednog konstruktora s različitim popisima parametara. Oni su raspoređeni na način da svaki konstruktor obavlja drugačiji zadatak. Prevodilac ih razlikuje prema broju parametara na popisu i njihovim vrstama.

Primjer preopterećenja konstruktora

 //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(); } } 
Testirajte sada

Izlaz:

 111 Karan 0 222 Aryan 25 

Razlika između konstruktora i metode u Javi

Postoje mnoge razlike između konstruktora i metoda. Oni su navedeni u nastavku.

Java konstruktorJava metoda
Konstruktor se koristi za inicijalizaciju stanja objekta.Metoda se koristi za otkrivanje ponašanja objekta.
Konstruktor ne smije imati povratni tip.Metoda mora imati tip povrata.
Konstruktor se poziva implicitno.Metoda se poziva eksplicitno.
Java prevoditelj daje zadani konstruktor ako nemate konstruktor u klasi.Metodu ni u kojem slučaju ne daje kompilator.
Naziv konstruktora mora biti isti kao naziv klase.Naziv metode može ali ne mora biti isti kao naziv klase.

Java konstruktori protiv metoda

Konstruktor Java kopiranja

U Javi ne postoji konstruktor kopiranja. Međutim, možemo kopirati vrijednosti s jednog objekta na drugi poput konstruktora kopiranja u C++.

Postoji mnogo načina kopiranja vrijednosti jednog objekta u drugi u Javi. Oni su:

  • Po konstruktoru
  • Dodjeljivanjem vrijednosti jednog objekta drugom
  • Metodom clone() klase Object

U ovom primjeru ćemo kopirati vrijednosti jednog objekta u drugi pomoću Java konstruktora.

 //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(); } } 
Testirajte sada

Izlaz:

 111 Karan 111 Karan 

Kopiranje vrijednosti bez konstruktora

Vrijednosti jednog objekta možemo kopirati u drugi dodjeljujući vrijednosti objekata drugom objektu. U ovom slučaju, nema potrebe za stvaranjem konstruktora.

 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(); } } 
Testirajte sada

Izlaz:

 111 Karan 111 Karan 

P) Vraća li konstruktor bilo kakvu vrijednost?

Da, to je trenutna instanca klase (ne možete koristiti vrstu povrata, ali ona vraća vrijednost).


Može li konstruktor obavljati druge zadatke umjesto inicijalizacije?

Da, poput stvaranja objekta, pokretanja niti, pozivanja metode itd. Možete izvesti bilo koju operaciju u konstruktoru kao što to radite u metodi.

java niz.format

Postoji li klasa Constructor u Javi?

Da.


Koja je svrha klase Constructor?

Java nudi klasu Constructor koja se može koristiti za dobivanje internih informacija o konstruktoru u klasi. Nalazi se u paketu java.lang.reflect.