Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Pikku kysymys

ItEliasPro [24.04.2011 12:32:18]

#

Kieli siis java.
Miksi kun esim laitan tälläisen koodin pätkän

class jee {
   jee() {
      this(0);
      System.out.println("jee");
   }
   jee(int x) {
      System.out.println(x);
   }
}

Niin jos suoritan tuon ensimmäisen se tulostaa

jee0

Miten saan sen nollan pois?

Metabolix [24.04.2011 12:36:30]

#

Koodisi tulostaa kylläkin näin:

0
jee

Ja juuri niinhän sen kuuluukin tulostaa. Jos et halua nollaa, älä tulosta sitä.

Macro [24.04.2011 12:51:10]

#

ItEliasPro kirjoitti:

Miten saan sen nollan pois?

Jättämällä kutsun this(0) pois.

ItEliasPro [24.04.2011 19:30:09]

#

Macro jos ottaisin this() metodin pois niin ei toka konstruktori toimisi.

Metabolix [24.04.2011 19:32:21]

#

Mitä oikein yrität selittää? Sinulla on kaksi erillistä konstruktoria, joita käytetään eri tavalla:

jee j1 = new jee();
jee j2 = new jee(123);

Mikään ei pakota kutsumaan yhden konstruktorin sisältä toista, ja kaikki ongelmat, jotka tästä seuraavat, ovat omaa syytäsi. Jos haluat ajaa molemmissa konstruktoreissa osittain saman koodin ja osittain eri koodin, voit joko kopioida yhteiset osat tai laittaa ne erilliseen funktioon.

Triton [24.04.2011 20:37:39]

#

Selvennyksenä vielä: Eli kysymyshän on puhtaasti metodien kuormittamisesta (eng. overloading) eli voidaan luoda useita samannimisiä metodeja, jotka eroavat toisistaan muodollisilta parametreiltaan (aksessorien tapauksessa myös paluuarvon tyypiltään). Tuota this()-metodia tulee käyttää ainoastaan sellaisessa tilanteessa, että haluat kutsua jotain luokan toista konstruktoria, ennen kuin suoritat kutsutun konstruktorin ohjelmakoodin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta