8.582
Bearbeitungen
Jneug (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „ == Methoden überladen == Beim Überschreiben bekommen abgeleitete Klassen eine eigene Version mindestens einer Methode der Basisklasse. <syntaxhighlight la…“) |
Jneug (Diskussion | Beiträge) 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> | ||