====== Kapitel 11: Überschreiben von Methoden ======
Oft unterscheiden sich die von einer Basisklasse abgeleiteten Klassen nicht nur dadurch, dass sie zusätzliche Attribute oder Methoden haben, sondern auch in der Implementierung gemeinsamer Methoden. Das Beispiel aus Kapitel 10 soll im folgenden so erweitert werden, dass sich die Sterne zusätzlich drehen, d.h. ihre ''zeitschritt''-Methode sieht so aus:
public void zeitschritt(){
vy += ay;
if(sprite != null) {
sprite.verschieben(vx, vy);
sprite.drehen(vx*2); //Diese Anweisung gibt es nicht bei Motorrädern und Autos!
}
}
Wir erreichen das durch ''Überschreiben'' der Methode ''zeitschritt'' in der Klasse ''SternNeu'':
public void zeitschritt() {
if (sprite != null) {
sprite.drehen(vx * 2);
}
super.zeitschritt();
}
Zunächst erhalten wir einen Fehler beim Kompilieren, da die Attribute ''vx'' und ''sprite'' in der Basisklasse ''Bewegte Figur'' mit der Sichtbarkeit ''private'' deklariert wurden. Dieser Fehler lässt sich beheben, indem man die Sichtbarkeit zu ''protected'' ändern.
**Sichtbarkeit von Attributen und Methoden:**
* **private**: Nur innerhalb der Klasse sichtbar
* **protected**: Innerhalb der Klasse und in allen von ihr abgeleiteten Klassen sichtbar
* **public**: Überall (auch von 'außen') sichtbar
Wir müssen also Folgendes ändern:
public class BewegteFigur {
protected Sprite sprite;
protected double vx, vy, ay;
...
}