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?
Koodisi tulostaa kylläkin näin:
0 jee
Ja juuri niinhän sen kuuluukin tulostaa. Jos et halua nollaa, älä tulosta sitä.
ItEliasPro kirjoitti:
Miten saan sen nollan pois?
Jättämällä kutsun this(0)
pois.
Macro jos ottaisin this() metodin pois niin ei toka konstruktori toimisi.
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.
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.