5.6. Nøgleordet this

Nogle gange kan et objekt have brug for at referere til sig selv. Det gøres med this-nøgleordet, der ligner (og bruges som) en variabel.

this refererer til det objekt, man er i

Læs igen definitionen af Boks2. I dens sætMål-metode brugte vi andre variabelnavne for parametrene (nemlig lgd, b og h) end objektvariablerne (længde, bredde og højde). Vi kan altid få fat i objektets variabler med this, så vi kunne også have brugt de samme variabelnavne:


import java.util.*;
public class Boks2medThis
{
  private double længde;
  private double bredde;
  private double højde;

  public void sætMål(double længde, double bredde, double højde)
  {
    if (længde<=0 || bredde<=0 || højde<=0) 
    {
       System.out.println("Ugyldige mål. Bruger standardmål.");
      this.længde = 10.0;
      this.bredde = 10.0;
      this.højde  = 10.0;
    } else {
      this.længde = længde;
      this.bredde = bredde;
      this.højde  = højde;
    }
  }

  public double volumen()
  {
    return bredde*højde*længde; 
  }

  public void føjTilVektor(Vector v)
  {
    v.addElement(this);
  }
}

Figur 5-5. this virker som en variabel der refererer til objektet selv

I sætMål() er der nu to sæt variabler med samme navn. Da vælger Java altid den variabel, der er "tættest på", dvs. f.eks. 'længde' svarer til parametervariablen længde. For at få fat i objektvariablen skal vi bruge this.længde.

Derfor skal vi skrive


      this.længde = længde;

for at tildele objektets længde-variabel den nye værdi.

En anden anvendelse af this er, når et objekt har brug for at give en reference til sig selv til et andet objekt. Normalt ville vi tilføje en boks til en vektor med:


  Vector v = new Vector()
  Boks2medThis b = new Boks2medThis();
  v.addElement(b);

Med metoden føjTilVektor() kan vi i stedet for bede b om at tilføje sig selv:


  b.føjTilVektor(v);

Vi vil senere (i Spiller-klassen i matadorspillet i kapitlet om nedarvning) se et eksempel på dette, hvor det er en fordel i praksis.