===== Überschreiben von Methoden =====
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''.