faecher:informatik:oberstufe:modellierung:vererbung:polymorphismus:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:modellierung:vererbung:polymorphismus:start [29.11.2021 20:04] – [Vererbung, kein Überschreiben] sbelfaecher:informatik:oberstufe:modellierung:vererbung:polymorphismus:start [19.03.2024 09:15] (aktuell) – [Lösungsansatz: Überschreiben] Frank Schiebel
Zeile 1: Zeile 1:
-====== Polymorphismus genauer ======+====== Methodenpolymorphismus ======
  
-===== Variablenpolymorphismus ===== +===== Problemstellung =====
- +
- +
-**Polymorphismus** haben wir schon für Variablen kennengelernt: Eine Variable eines Supertyps kann auch Werte aller Subtypen halten - die Variable ist //polymorph//+
- +
-{{ :faecher:informatik:oberstufe:modellierung:vererbung:polymorphismus:fahrzeuge.drawio.png?600 |}} +
- +
- +
----- +
-{{:aufgabe.png?nolink  |}} +
-=== (A1) === +
- +
-Welche Typen können Werte haben, die in den folgenden Variablen gespeichert werden? +
-<code> +
-Fahrzeug f;  +
-Roller r; +
-vierRaedrig v; +
-</code>  +
- +
-===== Methodenpolymorphismus ===== +
- +
-==== Problemstellung ====+
  
  
Zeile 48: Zeile 27:
  
  
-==== Lösungsansatz: Überschreiben ====+===== Lösungsansatz: Überschreiben =====
  
   * Superklasse und Subklasse definieren  Methoden mit gleicher Signatur.    * Superklasse und Subklasse definieren  Methoden mit gleicher Signatur. 
Zeile 89: Zeile 68:
 Die Methode der Superklasse wird also solange von den Versionen der Subklasse(n) „verdeckt“, solange es in den Subklassen Methoden mit gleicher Signatur gibt. Die Methode der Superklasse wird also solange von den Versionen der Subklasse(n) „verdeckt“, solange es in den Subklassen Methoden mit gleicher Signatur gibt.
 </WRAP> </WRAP>
 +
 +
 +
 +
 +
 +==== Vererbung und Überschreiben: ====
 +
 +<code java>
 +v1.display()
 +</code>
 +
 +{{ :faecher:informatik:oberstufe:modellierung:vererbung:polymorphismus:poly03.png?400 |}}
 +
 +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. Im Beispiel also die Methode, die in ''photoBeitrag'' implementiert ist.
  
 ==== Methodenwahl: Zusammenfassung ==== ==== Methodenwahl: Zusammenfassung ====
Zeile 101: Zeile 94:
  
  
 +===== Alle Klassen erben von "Object" =====
  
 +Jede Klasse erbt von Java Object, das kann man beispielsweise erkennen, wenn man einfach mal eine "leere" Klasse erstellt:
  
-==== Vererbung und Überschreiben====+<code java> 
 +class Ball () { 
 + 
 +
 +</code> 
 + 
 +Man kann diesen Ball instanziieren, obwohl er weder Konstruktor noch weitere Methoden enthält:
  
 <code java> <code java>
-v1.display()+Hund ball01 = new Ball();
 </code> </code>
  
-{{ :faecher:informatik:oberstufe:modellierung:vererbung:polymorphismus:poly03.png?400 |}}+Er hat sogar schon Methoden, z.B. die Methode ''toString()'':
  
-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. Im Beispiel also die Methode, die in ''photoBeitrag'' implementiert ist.+<code java> 
 +ball01.toString()
 +</code> 
 + 
 +das Erzeugt eine Ausgabe der folgenden Form:  
 + 
 +<code> 
 +ball01@af54f432 
 +</code>
  
  
 +https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html
 ===== Material ===== ===== Material =====
    
  
 {{simplefilelist>:faecher:informatik:oberstufe:modellierung:vererbung:polymorphismus:*}} {{simplefilelist>:faecher:informatik:oberstufe:modellierung:vererbung:polymorphismus:*}}
  • faecher/informatik/oberstufe/modellierung/vererbung/polymorphismus/start.1638216276.txt.gz
  • Zuletzt geändert: 29.11.2021 20:04
  • von sbel