Benutzer-Werkzeuge

Webseiten-Werkzeuge


klassen2:polymorphismus:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
klassen2:polymorphismus:start [2020/04/30 16:31] – [Überschreiben von Methoden] Martin Pabstklassen2:polymorphismus:start [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 ====== Überschreiben von Methoden, Polymorphismus ====== ====== Überschreiben von Methoden, Polymorphismus ======
 Im folgenden Beispiel sind die Klassen ''Rechteck'' und ''Kreis'' Unterklassen der Klasse ''Figur''. Letztere besitzt ein Attribut ''Farbe'' und eine Methode ''schreibeDaten()'' mit der grundlegenden Funktionalität, diese Farbe auszugeben. Es ist nicht sinnvoll, Objekte der Klasse ''Figur'' zu instanzieren, daher haben wir die Klasse als ''abstract'' deklariert. Im folgenden Beispiel sind die Klassen ''Rechteck'' und ''Kreis'' Unterklassen der Klasse ''Figur''. Letztere besitzt ein Attribut ''Farbe'' und eine Methode ''schreibeDaten()'' mit der grundlegenden Funktionalität, diese Farbe auszugeben. Es ist nicht sinnvoll, Objekte der Klasse ''Figur'' zu instanzieren, daher haben wir die Klasse als ''abstract'' deklariert.
-<code java>+<code learnj>
 abstract class Figur { abstract class Figur {
        
Zeile 26: Zeile 26:
 </WRAP> </WRAP>
  
-<code java [enable_line_numbers="true",highlight_lines_extra="13"]>+<code learnj [enable_line_numbers="true",highlight_lines_extra="13"]>
 class Rechteck extends Figur { class Rechteck extends Figur {
        
Zeile 46: Zeile 46:
 </code> </code>
  
-Wird nun bei einem ''Rechteck''-Objekt die Methode ''schreibeDaten()'' aufgerufen, so kommt immer die Methode der Klasse ''Rechteck'' zum Zug, nicht die Methode der Oberklasse ''Figur''. Probiere es im folgenden Beispiel aus, indem Du das Programm im Einzelschrittmodus ("Step into") ausführst!+Wird nun bei einem ''Rechteck''-Objekt die Methode ''schreibeDaten()'' aufgerufen, so kommt immer die Methode der Klasse ''Rechteck'' zum Zug, nicht die Methode der Oberklasse ''Figur''. Probiere es im folgenden Beispiel aus, indem Du das Programm im Einzelschrittmodus "step into ({{:klassen2:constructors:step-into-dark.png?nolink|}})ausführst!
  
  
 <HTML> <HTML>
  
-<div class="java-online" style="height: 400px; width: 100%" data-java-online="{}">+<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'id': 'Polymorphismus1', 'withBottomPanel': true}">
  
 <script type="text/plain" title="Main.java"> <script type="text/plain" title="Main.java">
Zeile 120: Zeile 120:
 <WRAP center round info 60%> <WRAP center round info 60%>
 Beachte die Methodenaufruf in den Zeilen 4 und 6 des Hauptprogramms oben: Beachte die Methodenaufruf in den Zeilen 4 und 6 des Hauptprogramms oben:
-<code java [enable_line_numbers="true", highlight_lines_extra="1,3", start_line_numbers_at="4"]>+<code learnj [enable_line_numbers="true", highlight_lines_extra="1,3", start_line_numbers_at="4"]>
 f1.schreibeDaten(); f1.schreibeDaten();
 println(); println();
Zeile 132: Zeile 132:
 <HTML> <HTML>
  
-<div class="java-online" style="height: 400px; width: 100%" data-java-online="{}">+<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'id': 'Polymorphismus2', 'withBottomPanel': true}">
  
 <script type="text/plain" title="Main.java"> <script type="text/plain" title="Main.java">
Zeile 199: Zeile 199:
 </HTML> </HTML>
 In Zeile 6 wird beim ersten Schleifendurchlauf die Methode ''schreibeDaten()'' der Klasse ''Rechteck'' aufgerufen, beim zweiten Durchlauf die Methode ''schreibeDaten()'' der Klasse ''Kreis''. In Zeile 6 wird beim ersten Schleifendurchlauf die Methode ''schreibeDaten()'' der Klasse ''Rechteck'' aufgerufen, beim zweiten Durchlauf die Methode ''schreibeDaten()'' der Klasse ''Kreis''.
 +<WRAP center round info 60%>
 +Am Beispiel oben wird deutlich, dass der Computer **erst zur Laufzeit** bestimmt, welche der beiden Methoden aufgerufen wird. Man spricht von **[[https://de.wikipedia.org/wiki/Dynamische_Bindung|dynamic Binding]]**.
 +</WRAP>
 +
klassen2/polymorphismus/start.1588257074.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki