Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java This -viittaus

Sivun loppuun

hevonen [17.10.2008 17:22:26]

#

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?

Blaze [17.10.2008 17:43:42]

#

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
  }
}

hevonen [17.10.2008 17:52:59]

#

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.

hevonen [17.10.2008 18:58:35]

#

Vai tarkoitatko jäsenmuuttujalla setNimi metodin muuttujaa, nimi? Tässä tapauksessa jäsenmuuttuja olisi sama kuin parametri.

hunajavohveli [17.10.2008 19:09:09]

#

Jäsenmuuttujia ovat nimenomaan luokan sisällä, mutta metodien ulkopuolella määritellyt muuttujat. Metodien parametrit eivät ole jäsenmuuttujia.

hevonen [18.10.2008 01:38:50]

#

Nyt selkisi. Kiitos!

hevonen [18.10.2008 20:30:18]

#

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?

Blaze [18.10.2008 20:40:44]

#

hevonen kirjoitti:

Eli katsooko Java tulkki aina parametrit ennen jäsenmuuttujia?

Joo.

hevonen [18.10.2008 21:02:24]

#

Kiitos - nyt selkisi Java tulin toiminta periaate :)

_Pete_ [19.10.2008 09:41:24]

#

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:

http://java.sun.com/docs/books/tutorial/java/concepts/

hevonen [26.10.2008 22:19:14]

#

Pete: Kiitos mainiosta linkistä!


Sivun alkuun

Vastaus

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

Tietoa sivustosta