Mihin this -komento tarkalleen viittaa? Se, että this viittaa tähän ilmentymään ei kerro minulle paljoa.
Ja mitä hyötyä this -komennon käytöstä on?
Esimerkiksi seuraavassa koodissa:
public class Kuulaskuri { private int kuu; // sallitut arvot 1,..12 // ----- konstruktori: ------- public Kuulaskuri() { this.kuu = 1; } // ----- aksessorit: ----------- public int moneskoKuu() { return this.kuu; } public void seuraavaKuu() { ++this.kuu; if (this.kuu == 13) this.kuu = 1; } }
Onko this -komennot välttämättömät tässä koodissa?
hevonen kirjoitti:
Mihin this -komento tarkalleen viittaa?
Just siihen olioon (instanssiin/ilmentymään/mitä sanaa nyt tykkäätkin käyttää), jossa koodia ollaan suorittamassa.
hevonen kirjoitti:
Ja mitä hyötyä this -komennon käytöstä on?
Se, että voidaan erotella kyseisen instanssin jäsenmuuttujan, ja mahdollisen samannimisen muun muuttujan välillä tai jos haluaa antaa juuri tämän olion parametrina jollekin metodille.
hevonen kirjoitti:
Esimerkiksi seuraavassa koodissa:
(*snip*)
Onko this -komennot välttämättömät tässä koodissa?
Ei--toki ei niistä haittaakaan ole.
Annan esimerkin tapauksesta, jossa this on välttämätön:
public class Kissa { String nimi = null; // this.nimi jäljempänä viittaa tähän nimeen public String getNimi() { return nimi; // tai this.nimi, tässä ihan sama } public void setNimi(String nimi) { // nimi ilman thisiä viittaa tähän nimeen this.nimi = nimi; // täällä ei enää olekaan ihan sama } }
Tuo selvensi lähes kaiken.
Onko jäsenmuuttuja edellisessä esimerkissäsi heti luokan määrityksen jälkeinen nimi -muuttuja? Ilmeisesti jäsenmuuttuja on siis methodin ulkopuolella määritetty muuttuja.
Vai tarkoitatko jäsenmuuttujalla setNimi metodin muuttujaa, nimi? Tässä tapauksessa jäsenmuuttuja olisi sama kuin parametri.
Jäsenmuuttujia ovat nimenomaan luokan sisällä, mutta metodien ulkopuolella määritellyt muuttujat. Metodien parametrit eivät ole jäsenmuuttujia.
Nyt selkisi. Kiitos!
Yksi kohta nousi vielä esiin tosta Blazen vastauksesta:
public String getNimi() { return nimi; // tai this.nimi, tässä ihan sama }
Viittaako nimi muuttuja jäsenmuuttujaan, koska metodissa ei ole parametrina nimi muuttujaa?
Eli katsooko Java tulkki aina parametrit ennen jäsenmuuttujia?
hevonen kirjoitti:
Eli katsooko Java tulkki aina parametrit ennen jäsenmuuttujia?
Joo.
Kiitos - nyt selkisi Java tulin toiminta periaate :)
hevonen kirjoitti:
Mihin this -komento tarkalleen viittaa? Se, että this viittaa tähän ilmentymään ei kerro minulle paljoa.
Tällasiin olio-ohjelmoinnin peruskysymyksiin auttaa kas kummaa olio-ohjelmoinnin perusteet tutoriaali:
Pete: Kiitos mainiosta linkistä!
Aihe on jo aika vanha, joten et voi enää vastata siihen.