Kompatibilität zwischen KlassenDie Beziehung zwischen einer Unterklasse und ihrer Oberklasse heißt ist-Beziehung, weil jedes Objekt der Unterklasse ein Spezialfall ihrer Oberklasse ist. Es hat dieselben Felder und dieselben Methoden wie ein Objekt der Oberklasse und kann daher auf die gleiche Weise benutzt werden. Weil Dog ein (Spezialfall von) Animal ist, darf man ein Dog-Objekt einer Animal-Variablen zuweisen. Die Animal-Variable referenziert dann das Dog-Objekt. Der Compiler läßt aber über die Animal-Variable nur Zugriffe auf Felder und Methoden zu, die bereits in Animal existieren. Würde man ein Animal-Objekt einer Dog-Variablen zuweisen, dann wäre die ist-Beziehung verletzt. Nicht jedes Animal ist ein Dog. Die Dog-Variable würde dann ein Animal-Objekt referenzieren, das aber nicht alle Felder und Methoden von Dog besitzt. Manche Zugriffe über die Dog-Variable würden dann ins Leere gehen. |
||