Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
faecher:informatik:oberstufe:modellierung:vererbung:polymorphismus:start [29.11.2021 21:01] – [Vererbung, kein Überschreiben] sbel | faecher:informatik:oberstufe:modellierung:vererbung:polymorphismus:start [03.12.2021 14:01] – [Methodenwahl: Zusammenfassung] sbel | ||
---|---|---|---|
Zeile 85: | Zeile 85: | ||
Bei der Suche nach der Methode wird die Vererbungshierarchie von unten nach oben durchlaufen (beginnend beim dynamischen Typ), bis zum Treffer – diese Methode wird ausgeführt. | Bei der Suche nach der Methode wird die Vererbungshierarchie von unten nach oben durchlaufen (beginnend beim dynamischen Typ), bis zum Treffer – diese Methode wird ausgeführt. | ||
+ | |||
+ | <WRAP center round box 90%> | ||
+ | Die Methode der Superklasse wird also solange von den Versionen der Subklasse(n) „verdeckt“, | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
==== Vererbung und Überschreiben: | ==== Vererbung und Überschreiben: | ||
Zeile 94: | Zeile 102: | ||
{{ : | {{ : | ||
- | Bei der Suche nach der auszuführenden Methode wird die Vererbungshierarchie von unten nach oben durchlaufen (beginnend beim dynamischen Typ), **bis der erste Treffer gefunden wird** – diese Methode wird ausgeführt. | + | Bei der Suche nach der auszuführenden Methode wird die Vererbungshierarchie von unten nach oben durchlaufen (beginnend beim dynamischen Typ), **bis der erste Treffer gefunden wird** – diese Methode wird ausgeführt. |
+ | |||
+ | ==== Methodenwahl: | ||
+ | |||
+ | - Auf die Variable wird zugegriffen | ||
+ | - Das in der Variable gespeicherte Objekt wird aufgesucht | ||
+ | - Die Klasse des Objekts wird bestimmt | ||
+ | - Implementiert die Klasse die gesuchte Methode? | ||
+ | - Wenn nicht, wird die Superklasse untersucht. | ||
+ | - Schritte 4) und 5) werden solange wiederholt, bis die Methode gefunden wurde oder die Klassenhierarchie bis ganz nach oben durchlaufen wurde. | ||
+ | - Die überschriebenen Methoden verdecken dabei stets die von der Superklasse geerbten Versionen. | ||
+ | |||
+ | |||
+ | ==== Alle Klassen erben von " | ||
+ | |||
+ | Jede Klasse erbt von Java Object, das kann man beispielsweise erkennen, wenn man einfach mal eine " | ||
+ | |||
+ | <code java> | ||
+ | class Ball () { | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | Man kann diesen Ball instanziieren, | ||
+ | |||
+ | <code java> | ||
+ | Hund ball01 = new Ball(); | ||
+ | </ | ||
+ | |||
+ | Er hat sogar schon Methoden, z.B. die Methode '' | ||
+ | |||
+ | <code java> | ||
+ | ball01.toString(); | ||
+ | </ | ||
+ | |||
+ | das Erzeugt eine Ausgabe der folgenden Form: | ||
+ | |||
+ | < | ||
+ | ball01@af54f432 | ||
+ | </ | ||
+ | |||
+ | |||
+ | https:// | ||
===== Material ===== | ===== Material ===== | ||
{{simplefilelist>: | {{simplefilelist>: |