Ü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:

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.