Lernpfad:Objektorientierte Programmierung mit Java/Vererbung: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
keine Bearbeitungszusammenfassung
(Die Seite wurde neu angelegt: „ == Methoden überladen == Beim Überschreiben bekommen abgeleitete Klassen eine eigene Version mindestens einer Methode der Basisklasse. <syntaxhighlight la…“)
 
Keine Bearbeitungszusammenfassung
Zeile 39: Zeile 39:
         unbekannt.sagWas();
         unbekannt.sagWas();
     }
     }
}
</syntaxhighlight>
=== Arbeitsauftrag ===
# Lies den [http://openbook.rheinwerk-verlag.de/javainsel/02_007.html#u2.7.10 "Abschnitt 6.4.1: Methoden in Unterklassen mit neuem Verhalten ausstatten"] im Onlinebuch "Java ist auch eine Insel" bis zur Überschrift "Die Annotation @Override".
# Erstellt ein kleines Beispielprojekt, an dem das Konzept "Überschreiben" erklärt werden kann.
== <code>super</code> und <code>this</code> ==
Wird eine Methode von einer Unterklasse überschrieben, möchte man dennoch manchmal explizit die überschriebene Methode der Oberklasse aufrufen. Für diese Fälle gibt es das bekannte Schlüsselwort <code>super</code>. Es bezieht sich immer auf die Oberklasse der aktuellen Klasse. Um explizit die aktuelle Klasse zu referenzieren, kann das Schlüsselwort <code>this</code> benutzt werden.
<syntaxhighlight lang="java">
class Tier {
  // Das Attribut ist private und von der Unterklasse nicht nutzbar.
  private String name;
  public Tier( String pName ) {
    this.name = pName;
  }
  public void ausgabe() {
    System.out.println( "Mein Name ist " + this.name );
  }
}
class Hund extends Tier {
  private String rasse;
 
  public Hund( String pName, String pRasse ) {
    super(pName);
    this.rasse = pRasse;
  }
  // Will die Ausgabe auch den Namen ausgeben (der in der Oberklasse als private markiert ist),
  // muss die Methode "ausgabe()" der Oberklasse explizit aufgerufen werden.
  public void ausgabe() {
    System.out.println( "Ich bin ein " + this.rasse );
    super.ausgabe();
  }
}
}
</syntaxhighlight>
</syntaxhighlight>

Navigationsmenü