===== Überschreiben von Methoden ===== {{ :polymorphismus:pasted:20230309-175338.png?400 }} Tier t; t = new Katze("Snoopy"); t.miaue(); //Geht nicht! t = new Hund("Harro"); t.belle(); //Geht nicht! 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 }} Tier t; t = new Katze("Snoopy"); t.sagwas(); //Geht! t = new Hund("Harro"); t.sagwas(); //Geht! 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''.