Konstruktor je specijalni tip metode koji se koristi da inicijalizuje objekt. Konstruktor se poziva u trenutku kreiranja objekta. On konstruiše vrijednosti, tj. obezbjeđuje podatke za objekt i otuda mu to ime.
U osnovi, postoje dva definisana pravila za konstruktore:
Postoje dva tipa konstruktora:
1) Podrazumijevani konstruktor Ovaj konstruktor nema parametara, a njegova sintaksa je:
<ime_klase>(){}
Primjer 1: Kreiranje podrazumijevanog konstruktora u klasi Bike. On će biti pozvan u trenutku kreiranja objekta.
class Bike1{
Bike1(){System.out.println("Bike je kreiran");}
public static void main(String args[]){
Bike1 b=new Bike1();
}
}
Ispis na ekranu:
Bike je kreiran
Pravilo: Ako nema konstruktora u klasi, kompajler automatski kreira podrazumijevani konstruktor. Svrha postojanja podrazumijevanog konstruktora je da obezbijedi podrazumijevane (default) vrijednosti za objekt, napr. 0, null itd., u zavisnosti od tipa.
Primjer 2: Podrazumijevani konstruktor koji prikazuje podrazumijevane vrijednosti.
class Student3{
int id;
String name;
void display(){System.out.println(id+" "+name);}
public static void main(String args[]){
Student3 s1=new Student3();
Student3 s2=new Student3();
s1.display();
s2.display();
}
}
Ispis na ekranu:
0 null
0 null
Objašnjenje: U ovoj klasi nije kreiran nikakav konstruktor, tako da kompajler obezbjeđuje podrazumijevani konstruktor. Vrijednosti 0 i null je obezbijedio podrazumijevani konstruktor.
2) Parametrizovani konstruktor Ovaj konstruktor ima parametre i koristi se da obezbijedi različite vrijednosti za zasebne objekte.
Primjer 3: Kreiranje konstruktora klase Student4 koji ima dva parametra. Moguće je imati bilo koji broj parametara u konstruktoru.
class Student4{
int id;
String ime;
Student4(int i,String n){
id = i;
ime = n;
}
void display(){System.out.println(id+" "+ime);}
public static void main(String args[]){
Student4 s1 = new Student4(111,"Petar");
Student4 s2 = new Student4(222,"Marko");
s1.display();
s2.display();
}
}
Ispis na ekranu:
111 Petar
222 Marko
Ovo je tehnika u Javi u kojoj klasa može imati bilo koji broj konstruktora koji se razlikuju u parametarskim listama. Kompajler pravi razliku između ovih konstruktora tako što uzima u obzir broj parametara u listi i njihov tip.
Primjer 4: Preopterećenje konstruktora
class Student5{
int id;
String ime;
int starost;
Student5(int i,String n){
id = i;
ime = n;
}
Student5(int i,String n,int a){
id = i;
ime = n;
starost=a;
}
void display(){System.out.println(id+" "+ime+" "+starost);}
public static void main(String args[]){
Student5 s1 = new Student5(111,"Petar ");
Student5 s2 = new Student5(222,"Marko",25);
s1.display();
s2.display();
}
}
Ispis na ekranu:
111 Petar 0
222 Marko 25
| Konstruktor | Metoda |
| Konstruktor se koristi da inicijalizuje stanje objekta | Metoda se koristi da izrazi ponašanje objekta |
| Konstruktor ne smije imati return tip | Metoda mora imati return tip |
| Konstruktor se poziva implicitno | Metoda se poziva eksplicitno |
| Java kompajler obezbjeđuje podrazumijevani konstruktor ako nema konstruktora | Metodu ne obezbjeđuje kompajler ni u kom slučaju |
| Ime konstruktora mora biti isto kao ime klase | Ime metode može ali i ne mora biti isto kao ime klase |
Napomena: Ponegdje se može naći u literaturi naziv instansna metoda za one metode u klasi koje nisu konstruktor.
Postoji mnogo načina za kopiranje vrijednosti jednog objekta u drugi. Neki od njih su:
Primjer 5: Kopiranje vrijednosti jednog objekta u drugi pomoću konstruktora.
class Student6{
int id;
String ime;
Student6(int i,String n){
id = i;
ime = n;
}
Student6(Student6 s){
id = s.id;
ime =s.ime;
}
void display(){System.out.println(id+" "+ime);}
public static void main(String args[]){
Student6 s1 = new Student6(111,"Petar");
Student6 s2 = new Student6(s1);
s1.display();
s2.display();
}
}
Ispis na ekranu:
111 Petar
111 Petar
Primjer 6: Kopiranje vrijednosti jednog objekta u drugi dodjeljivanjem vrijednosti jednog objekta drugom . U ovom slučaju nema potrebe za kreiranjem konstruktora.
class Student7{
int id;
String ime;
Student7(int i,String n){
id = i;
ime = n;
}
Student7(){}
void display(){System.out.println(id+" "+ime);}
public static void main(String args[]){
Student7 s1 = new Student7(111,"Petar");
Student7 s2 = new Student7();
s2.id=s1.id;
s2.ime=s1.ime;
s1.display();
s2.display();
}
}
Ispis na ekranu:
111 Petar
111 Petar
Napomena: Konstruktor može izvršiti i druge zadatke osim inicijalizacije, kao što su kreiranje objekta, pozivanje metode itd. Bilo koja operacija se može izvršiti u konstruktoru kao i u metodi.
Zadaci iz ovog poglavlja Objektno orijentisano programiranje u Javi Index
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |