Erste Schritte This

kamazoom

Mitglied
Hallo, kann mir jemand an einem Beispiel erklären, was das this ist?

Ich steige von pascal um. Ist es ein zeiger? Wie kann this unterschieden werden , wenn man mehrere davon im Quellcode hat?

Danke Kamazoom
 
N

nillehammer

Gast
In der Objektorientierung gibt es Instanzen von Objekten. This ist das Schlüsselwort, um auf die Instanz zu referenzieren, in der sich der Code befindet. Es wird benutzt, um bspw. auf Felder und Methoden zuzugreifen und ermöglicht sogar Variablen gleichen Namens Beispiel:
Java:
public class Mensch
  private String vorName;

  public void setVorName(String vorName) {
    // in diesem Block haben wir 2 Variablen mit namen "vorName".
    // ohne das this bezieht es sich auf den Methodenparameter
    // mit dem this auf die Instanzvariable. 
    this.vorName = vorName;
  }

  public String getVorName() {
    // In diesem Fall ginge es auch ohne this, weil bereits der Name
    // "vorName" eindeutig ist. Ich nutze es aber gerne trotzdem,
    // um klar lesbar zu machen, dass ich hier auf die aktuelle Instanz referenziere.
    return this.vorName;
 }
Ist es ein zeiger?
Ja. Ich finde nur das Wort "Zeiger" etwas unglücklich, weil man da an Zeiger wie in C denkt. Die gibt es in Java nicht. Sage lieber "Referenz".
Wie kann this unterschieden werden , wenn man mehrere davon im Quellcode hat?
Habe mein Beispiel erweitert. Da this immer die aktuelle Instanz referenziert, wird immer dasselbe referenziert. Eine Unterscheidung ist also nicht nötig.
 
Zuletzt bearbeitet von einem Moderator:
H

hüteüberhüte

Gast
Wenn du eine Klasse B hast, die A erweitert, und in A this schreibst, könnte sich das auf die Instanz der Klasse B beziehen (Verbessert mich, wenn ich falsch liegen sollte :D )
 
N

nillehammer

Gast
Wenn du eine Klasse B hast, die A erweitert, und in A this schreibst, könnte sich das auf die Instanz der Klasse B beziehen (Verbessert mich, wenn ich falsch liegen sollte )
1. Ja, das stimmt, also Du hast Recht.
2. Falls das als Hinweis darauf gemeint war, dass es nicht unbedingt die Instanz sein muss, in der der Code steht, danke.
 
N

nillehammer

Gast
[OT]
hüteüberhüte hat gesagt.:
Alle pathologische Beispiele einmal nennen
Simmt, mach ich auch öfters :D. Wenn beim nächsten Mal die Frage nach "this" kommt und ich wieder der erste sein sollte, werde ich das "in dem der Code steht" nicht mehr schreiben...:) Hast sogar ein Danke von mir bekommen ;)
[/OT]
 
Zuletzt bearbeitet von einem Moderator:

Ark

Top Contributor
[c]this[/c] ist eine unveränderbare Referenz (d.h., du kannst z.B. nicht [c]this = null[/c] schreiben). Man kann sich [c]this[/c] als den ersten (nicht selbst hingeschriebenen) Parameter vorstellen, und dieser zeigt immer auf das Objekt auf der linken Seite des Punktes ([c].[/c]) bei einem Methodenaufruf:

Java:
		abc.machWas(); // wird irgendwo so aufgerufen
[…]
	public void machWas(){
		// Im Falle des Aufrufs oben ist this das Objekt, auf das abc referenziert
	}
Hier noch einmal ein anderer Beitrag (der dich hoffentlich nicht zu sehr verwirrt :oops:), in dem die technische Umsetzung näherungsweise dargestellt wird:
http://www.java-forum.org/java-basics-anfaenger-themen/141758-static-methoden.html#post942465

Ark
 

Neue Themen


Oben