# Zugriff auf Member-Variablen



## alunno (12. Aug 2008)

Hallo!

Es gibt ja mindestens drei Möglichkeiten, innerhalb einer Klasse auf Member-Variablen zuzugreifen:

```
public class DemoMemberVars {
    
    private int member = 123;

    public int getMember() {
        return member;
    }
    
    public void tuWas() {
        // Variante 1, ohne this
        System.out.println(member + 1);

        // Variante 2, mit this
        System.out.println(this.member + 1);
        
        // Variante 3, per Getter
        System.out.println(getMember() + 1);
    }
```

Welche Variante wird üblicherweise verwendet?

Danke,
Alunno


----------



## lhein (12. Aug 2008)

Das kommt ganz darauf an, was man mit der Variablen macht. Im Normalfall würde ich immer die getXXX verwenden.
Der Grund dafür ist einfach. In der get-Methode könnte durchaus noch Logik stecken, die ich bei einem Direktzugriff überspringen würde.

Aber wie schon gesagt...das hängt immer vom Anwendungsfall ab.

lhein


----------



## Guest (12. Aug 2008)

Alle drei. Mit Variante 3 machst du aber nichts falsch, denn es ist grundsätzlich nicht verkehrt den Zugriff auf die 
Variablen auf eine Stelle zu beschränken.


----------



## Der Müde Joe (12. Aug 2008)

this ist unter umständen nötig zB

```
void foo(String name) {
this.name = name;
}
```


was am besten ist....hmmm.. ich benutzt meistens this.name.
getName wäre am saubersten, da nur über getter/setter auf die Variable zugegriffen wird.


----------



## Leroy42 (12. Aug 2008)

Variante 2 nur dann, wenn du den Variablennamen lokal
überdeckt hast, z.B. durch einen Parameternamen.

Variante 3 macht Sinn, wenn du, hierarchie-abhängig, noch
etwas beim Lesen einer Variablen veranstalten willst; z.B.
mitzählen, wie oft eine Variable ausgelesen wird.

Ansonsten Variante 1


----------



## alunno (12. Aug 2008)

Wahnsinn!!! So viel Feedback in so kurzer Zeit!
Ich danke euch.

Mir persönlich würde Variante 2 (this.member) besser gefallen als Variante 1, weil ich Sie sprechender finde.
Hat die Verwendung von this einen Nachteil (außer mehr Tipparbeit)?


----------



## Wildcard (12. Aug 2008)

getter sind in der Regel besser, weil du in Subklassen durch Überschreiben des getters das Verhalten ändern kannst und ausserdem den Zugriff kontrollierst.
Wenn du derzeit direkten Zugriff verwendest, und das gerne Ändern möchtest, eine vernünftige IDE kann dir automatisch alle direkten Zugriffe auf einen getter umbiegen.


----------



## Guest (12. Aug 2008)

alunno hat gesagt.:
			
		

> Hat die Verwendung von this einen Nachteil (außer mehr Tipparbeit)?


Eigentlich keine, ist aber überflüssig und wird z.B. in Eclipse, je nach Einstellungen, automatisch entfernt.
Das ist genauso, wie eine Klasse Person zu definieren und darin eine Variable personAlter. 
Es ist von vorn herein klar, dass es zur Person gehört, daher ist das Präfix "person" einfach 
nur unnötige Tastaturquälerei.


----------



## musiKk (12. Aug 2008)

Das sieht halt wieder jeder anders: Wenn die Klassen und Methoden laenger werden, dann kann man unter Umstaenden nicht mehr auf den ersten Blick erkennen, ob es sich bei einem Bezeichner um eine Member- oder lokale Variable handelt. Mit this faellt diese Unsicherheit weg. Ich muss allerdings zugeben, dass ich es immer weglasse (sofern ich nicht ueberdeckende lokale Variablen habe).


----------

