Benutzer-Werkzeuge

Webseiten-Werkzeuge


polymorphismus:methodoverriding

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
polymorphismus:methodoverriding [2023/03/09 16:52] – angelegt Martin Pabstpolymorphismus:methodoverriding [2023/03/09 17:02] (aktuell) Martin Pabst
Zeile 1: Zeile 1:
-===== Überladen von Methoden =====+===== Überschreiben von Methoden ===== 
 +<WRAP center round info 100%> 
 +{{ :polymorphismus:pasted:20230309-175338.png?400 }} 
 +<code java> 
 +Tier t; 
 +t = new Katze("Snoopy"); 
 +t.miaue(); //Geht nicht! 
 +t = new Hund("Harro"); 
 +t.belle(); //Geht nicht! 
 +</code> 
 +Wir wissen, dass wir in der obigen Situation die Methoden ''miaue'' und ''belle'' nur durch umständliches **Casten** aufrufen können. Aber wir könnten den Compiler doch austricksen: 
 +{{ :polymorphismus:pasted:20230309-175706.png?400 }} 
 +<code java> 
 +Tier t; 
 +t = new Katze("Snoopy"); 
 +t.sagwas(); //Geht! 
 +t = new Hund("Harro"); 
 +t.sagwas(); //Geht! 
 +</code> 
 + 
 +Der Computer entscheidet erst zur Laufzeit, ob bei ''t.sagwas()'' die Methode ''sagwas()'' der Klasse ''Katze'' aufgerufen wird oder die der Klasse ''Hund''. Man nennt dies **dynamische Bindung**. Man sagt: Die Methoden ''sagwas()'' der Klassen ''Hund'' und ''Katze'' **überschreiben** die Methode **sagwas()** der Klasse ''Tier''
 + 
 +</WRAP> 
 + 
 +<HTML> 
 + 
 +<div class="java-online" style="height: 50vh; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'polymorphismus4'}"> 
 + 
 +<script type="text/plain" title="Test1.java"> 
 + 
 +Tier t;  
 +t = new Katze("Snoopy"); 
 +t.sagwas(); 
 + 
 +t = new Hund("Bello"); 
 +t.sagwas(); 
 + 
 +class Tier { 
 +   String name; 
 +   String art; 
 + 
 +   Tier(String art, String name) { 
 +      this.art = art; 
 +      this.name = name; 
 +   } 
 + 
 +   void stellDichVor() { 
 +      println("Ich heiße " + name + " und bin ein/e " + art); 
 +   } 
 + 
 +   void sagwas(){ 
 +      println("Ich weiß zwar, dass ich ein Tier bin, aber ich weiß nicht, welches. Daher sag ich lieber nichts."); 
 +   } 
 +
 + 
 +class Katze extends Tier { 
 +   Katze(String name) { 
 +      super("Katze", name); 
 +   } 
 +    
 +   void sagwas(){ 
 +      println("Miauuu!"); 
 +   } 
 +
 + 
 +class Hund extends Tier { 
 +   Hund(String name) { 
 +      super("Hund", name); 
 +   } 
 +    
 +   void sagwas(){ 
 +      println("Wau!"); 
 +   } 
 +
 + 
 + 
 +</script> 
 + 
 +</div> 
 + 
 + 
 +</HTML>
polymorphismus/methodoverriding.1678380735.txt.gz · Zuletzt geändert: 2023/03/09 16:52 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki