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 nullObjaš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