Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
schule:klassen:2017:10b:kap11 [2018/06/13 09:16] – angelegt martin | schule:klassen:2017:10b:kap11 [2021/12/29 10:40] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== 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 '' | ||
+ | <code java> | ||
+ | public void zeitschritt(){ | ||
+ | |||
+ | vy += ay; | ||
+ | |||
+ | if(sprite != null) { | ||
+ | sprite.verschieben(vx, | ||
+ | sprite.drehen(vx*2); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | Wir erreichen das durch '' | ||
+ | < | ||
+ | public void zeitschritt() { | ||
+ | |||
+ | if (sprite != null) { | ||
+ | sprite.drehen(vx * 2); | ||
+ | } | ||
+ | |||
+ | super.zeitschritt(); | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | Zunächst erhalten wir einen Fehler beim Kompilieren, | ||
+ | <WRAP center round info 60%> | ||
+ | **Sichtbarkeit von Attributen und Methoden:** | ||
+ | * **private**: | ||
+ | * **protected**: | ||
+ | * **public**: Überall (auch von ' | ||
+ | </ | ||
+ | Wir müssen also Folgendes ändern: | ||
+ | <code java> | ||
+ | public class BewegteFigur { | ||
+ | |||
+ | protected Sprite sprite; | ||
+ | |||
+ | protected double vx, vy, ay; | ||
+ | |||
+ | ... | ||
+ | } | ||
+ | </ | ||
+ | |||