Čemu služi Java konstruktor?

poruka: 9
|
čitano: 20.705
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
neaktivan
offline
Čemu služi Java konstruktor?

MOže li mi netko objasniti što je Java konstruktor, što on u programu predstavalja, čemu služi, dali se može bez njega, što ako kod napišemo bez njega???

 

Hvala!

Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Čemu služi Java konstruktor?

Kao u svakom objektno orijentiranom jeziku , konstruktor ti je komad koda, koji se izvrši čim od klase napraviš objekt. Znači pri stvaranju objekta.

Sluzi da bi inicijalizirao odredjene clanove objekta cim se on stvori.

Konstruktor nema povratnu vrijednost i uvijek se zove isto kao i klasa u kojoj se definira.

npr. 

 

Vozilo mojeAuto=new Vozilo()     // izvrsava se konstruktor bez parametara ...()

 

Ovo gore je defaultni konstruktor i njega ce ti napraviti kompajler, u slucaju da nisi specificirao svoj. . Dakle ne moras ga raditi ako neces.

 

 

Primjer implementacije svog konstruktora:

 

class Vozilo

{

        int brojKotaca;

 

        Vozilo (int BrojKotaca)          // obrati pozornost na sintaksu

       {

         brojKotaca=BrojKotaca;

        }

}

 

Ovo ce se izvrsiti kada kreiras objekt na sljedeci nacin.

Vozilo auto=new Vozilo(4); //prosljedjuje se  parametar 4, i na tu vrijednost se postavlja varijabla unutar objekta.

 

Ako napravis svoj konstruktor, tada trebas napraviti i defaultni jer se nece automatski generirati.

 

 

Vise o tome OVDJE

 

-- Ode pile pod kamion.
Poruka je uređivana zadnji put čet 28.10.2010 21:44 (Wally).
Moj PC  
1 0 hvala 2
13 godina
neaktivan
offline
Čemu služi Java konstruktor?

Znači konstruktor služi za kreiranje objekata, konstruktor netrebamo koristit u klasi koja nema main metodu nego koristimo samo gettere i settere??

 

Šta ako se konstruktor napravi u klasi koja nema main metodu i u kojoj nismo kreirali objekte, šta on u tom trenutku predstavlja???

 

npr:

 

public class Vrijeme {
    public Vrijeme(int sati, int minute, int sekunde) {
        this.sati = sati;
        this.minute = minute;
        this.sekunde = sekunde;
   }


private int sati;
private int minute;
private int sekunde;


public int getSati() {
return sati;
}
public void setSati(int sati) {
this.sati = sati;
}
...
}

Moj PC  
0 0 hvala 0
15 godina
offline
RE: Čemu služi Java konstruktor?

Konstruktor moraš uvijek koristiti, osim u slučaju da imaš statičku klasu ili da dohvaćaš objekte preko neke "factory" klase (iako ona onda interno koristi konstruktor te klase i postavlja neke vrijednosti za tu klasu). Ako ne inicijaliziraš klasu, ona je tada null i ne možeš dohvatiti njene vrijednosti (jer ih nema), a niti ih postaviti (nemaju memorijsku lokaciju na koju se moraju spremiti)

 

Ovo drugo pitanje nisam baš shvatio. Ako u klasi nema main metode, tada se ta klasa ne može koristiti kao "startup" klasa za neki projekt (aplikaciju), ali se možeš inicijalizirati unutar klase sa main metodom. Npr..

 

public class Vrijeme {

    private int sati;
    private int minute;
    private int sekunde;

 

//Konstruktor

    public Vrijeme(int sati, int minute, int sekunde) {
        this.sati = sati;
        this.minute = minute;
        this.sekunde = sekunde;
   }

 

....getteri i setteri ...

}

 

public class Main (){

       public static void main(String[] args){

            Vrijeme vrijeme = new Vrijeme (neke vrijednosti....); //init klase

            int sati = vrijeme.getSati(); //uporaba klase

            .....

       }

}

'Genius might be the ability to say a profound thing in a simple way' Charles Bukowski
13 godina
neaktivan
offline
Čemu služi Java konstruktor?

hvala na odgovoru, :)

 

nije ta klasa ni predviđena da bude "startup" samo me zanima zašto radimo konstruktor u klasi koja nema main?

Moj PC  
0 0 hvala 0
15 godina
odjavljen
offline
RE: Čemu služi Java konstruktor?

Svaka klasa koja nije static ima konstruktor. Ako ga programer nije sam napisao, kompajler kreira "prazni" public konstruktor bez argumenata.

Konstruktor se izvršava prilikom kreiranja instance klase (new) i onaj tko pokušava kreirati instancu mora imati pristup konstruktoru.

Tri najvažnje primjene konstruktora su:

- Postavljanje vrijednosti varijabli prilikom instanciranja klase - vrijednosti proslijeđene kao argument konstruktoru

- Izvršavanje dijela koda koji mora biti izvršen prilikom instanciranja klase - tipa otvaranje file za pisanje ukoliko se radi o klasi koja je zadužena za zapis u file

- Regulacija tko može instancirati klasu - primjerice, možeš imati private konstruktor i static metodu koja poziva konstruktor samo ako već ne postoji instanca te klase, a ako već postoji vraća postojeću instancu, tako da može biti samo jedna instanca kreirana (singleton) ili možeš imati protected konstruktor tako da ne možeš instancirati tu klasu, već samo one koje je nasljeđuju

Heart: _/\_/\_/\_/\_/\_/\_/\_/\_ Brain: __________________________
13 godina
neaktivan
offline
Čemu služi Java konstruktor?

kako bi ovo trebalo izgledati:

 

kreirati jedan objekt klase "StambenaZgrada" koja će sadržavati dva objekta tipa "Stan".

 

ja sam mislio: StambenaZgrada stan = new StambenaZgrada();

 

ali mislim da je to krivo jer piše da treba sadržavati dva objekta "tipa "Stan"".

 

hvala!

Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
RE: Čemu služi Java konstruktor?
phearless kaže...

kako bi ovo trebalo izgledati:

 

kreirati jedan objekt klase "StambenaZgrada" koja će sadržavati dva objekta tipa "Stan".

 

ja sam mislio: StambenaZgrada stan = new StambenaZgrada();

 

ali mislim da je to krivo jer piše da treba sadržavati dva objekta "tipa "Stan"".

 

hvala!

 

Dok kaze dva objekta tipa Stan (a Stan nije javina klasa) moras imati i klasu koja definise Stan. Dakle prvo bi trebao napraviti tu klasu, npr:

public class Stan{

     //ovdje stavljaj varijable koje su ti interesantne za stan, npr

     int brojSoba;

     double povrsina;

     String vlasnik; //itd

     //sad napravis konstruktor, prvo tzv. "prazni" konstruktor (koji nema nikakve argumente)

     public Stan(){

     }

     //i jedan "puni", koji ce inicijalizirati vrijednosti

     public Stan(int brojSoba, double povrsina, String vlasnik){

          this.brojSoba = brojSoba;

          this.povrsina = povrsina;

          this.vlasnik = vlasnik;

     }

     //sad mozes kreirati get & set metode

}

 

Sad bi mogao kreirati klasu Stambena zgrada, npr ovako:

public class StambenaZgrada{

     Stan prviStan;

     Stan drugiStan;

     //konstruktori

     public StambenaZgrada(){

     }

     public StambenaZgrada(Stan prvi, Stan drugi){

          prviStan = prvi;

          drugiStan = drugi;

     }

     //get & set metode

}

 

Sad ces u nekoj izvrsnoj klasi (koja ima main metodu) jednostavno kreirati jedan objekat klase StambenaZgrada, npr ovako:

public class Test{

     public static void main(String args[]){

          StambenaZgrada zgrada = new StambenaZgrada();

     }

}

 

Sa ovim si obavio zadatak kreiranja objekta StambenaZgrada koja sadrzi dva objekta Stan, ali ovaj nacin koji sam ti pokazao i nije bas smislen (naravno zavisi od zadatka) jer ce se pozvati samo "prazni" konstruktori, sto znaci da objekti nece imati nikakve vrijednosti. To mozes rijesiti ili pomocu get i set metoda nakon sto si kreirao objekat StambenaZgrada, ili da prije kreiranja objekta StambenaZgrada, kreiras prvo dva objekta Stan, pa ih proslijedis konstruktoru objekta StambenaZgrada.

 

Nadam se da ti je ovo pomoglo ;)

 

13 godina
neaktivan
offline
Čemu služi Java konstruktor?

puno hvala, puno će pomoći :) :)

Moj PC  
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice