Normal
Ist eigentlich logisch, wenn du es dir überlegst. Du hast z.B. eine Liste mit irgendwelchen Menschen. Jeder Mensch hat eine [c]essen(honigsorte)[/c]-Methode, nur für der Papst gibt es die Version [c]essen(honigsorte, marmelade)[/c]. Wie soll der Aufruf für den Papst erfolgen? Woher soll die Marmelade kommen? Brauchen wir einen Marmeladenvorrat, auch wenn nur einer von 7 Milliarden Menschen eine Extra-Marmeladenwurst gebraten bekommt? Sicher, man kann einen speziellen Test auf "Papst" einbauen, aber es ist ja gerade ein Grundprinzip(*) der Vererbung, dass eine abgeleitete Klasse prinzipiell so wie die Elternklasse verwendet werden kann (auch wenn zusätzliche Attribute und Methoden - etwa [c]urbiEtOrbi()[/c] - erlaubt sind).(*) Liskovsches Substitutionsprinzip: "Eigenschaften, die anhand der Spezifikation des vermeintlichen Typs eines Objektes bewiesen werden können, sollten auch dann gelten, wenn das Objekt einem Untertyp dieses Typs angehört".
Ist eigentlich logisch, wenn du es dir überlegst. Du hast z.B. eine Liste mit irgendwelchen Menschen. Jeder Mensch hat eine [c]essen(honigsorte)[/c]-Methode, nur für der Papst gibt es die Version [c]essen(honigsorte, marmelade)[/c]. Wie soll der Aufruf für den Papst erfolgen? Woher soll die Marmelade kommen? Brauchen wir einen Marmeladenvorrat, auch wenn nur einer von 7 Milliarden Menschen eine Extra-Marmeladenwurst gebraten bekommt? Sicher, man kann einen speziellen Test auf "Papst" einbauen, aber es ist ja gerade ein Grundprinzip(*) der Vererbung, dass eine abgeleitete Klasse prinzipiell so wie die Elternklasse verwendet werden kann (auch wenn zusätzliche Attribute und Methoden - etwa [c]urbiEtOrbi()[/c] - erlaubt sind).
(*) Liskovsches Substitutionsprinzip: "Eigenschaften, die anhand der Spezifikation des vermeintlichen Typs eines Objektes bewiesen werden können, sollten auch dann gelten, wenn das Objekt einem Untertyp dieses Typs angehört".