Frage von Azasel, 55

[Java] Kann mir jemand this. und super. einfach erklären?

Guten Tag,
Ich habe Schwierigkeiten beim Verständnis von this und super.
Wie wichtig sind this ?
Ich kenne this aus Javascript und ich habe es auch schonmal gebraucht gehabt aber nie den Sinn darin verstanden :( .
Genauso mit super.().
Das soll auf die jeweilige Methode hinweisen oder ?
Danke schonmal

Expertenantwort
von KnusperPudding, Community-Experte für Java, 38
this;

Wird dazu benötigt um Instanz-Variablen von lokalen Variablen zu unterscheiden. Sprich:

private String test;

private void setTest(String test) {
    this.test = test;
}

Hierbei wird bei this immer auf Variablen (oder Methoden) der aktuellen Instanz der aktuellen Klasse verwiesen.


super

wird bei Vererbung benötigt. - Hierbei verweist du mit super auf eine Methode oder eine Variable der Klasse, von der du geerbt hast

Hier ein kleines Beispiel:


 abstract class Tier {

private String bezeichnung;
public Tier(String bezeichnung) {
this.bezeichnung = bezeichnung;
} public String getBezeichnung() { return bezeichnung; }
}

class Hund extends Tier {
public Hund() { super("Hund"); } @Override public String getBezeichnung() { return "Wauwau"; } }

Hier ruft "Hund" den Konstruktor der vererbten Klasse: Tier auf. Wodurch die Bezeichnung "Hund" gesetzt wird.

Tier z.B. hat auch die Methode getBezeichnung();

Befindet man sich nun in der Klasse Hund, könnte man theoretisch beide getBezeichnung() Methoden verwenden, und zwar:

  1. this.getBezeichnung()   // Verweist auf die aktuelle Klasse und gibt Wauwau zurück
  2. super.getBezeichnung() // Verweist auf die Vererbte Klasse und gibt Hund zurück
Kommentar von Azasel ,

Sehr tolle Beschreibung, danke sehr

Antwort
von Masterman431, 39

Das ist ganz easy:

Du hast 2 Klassen, Klasse Auto und Klasse Banane, welche von der Klasse Auto. Beide haben die Variable "abc"

Jetzt erzeugst du in Klasse Banane eine Methode die die Variable "abc" von Klasse Auto ansprechen soll --> super.abc

wenn du abc aus der eigenen Klasse (Banane) ansprechen willst, nimmst du this.abc

Kommentar von ceevee ,

Eine Banane ist ein Auto und Bananen sowie Autos haben die Eigenschaft "abc"... alles klar, das ist ja echt ein total realistisches Beispiel, direkt aus dem wahren Leben gegriffen. Da versteht man total super, was du eigentlich meinst. Nicht.

Keine passende Antwort gefunden?

Fragen Sie die Community