Wenn ich Ihnen sage, dass ich einen Hund habe, können Sie davon ausgehen, dass ich ein Haustier habe.
Wenn ich Ihnen sage, dass ich ein Haustier habe, wissen Sie nicht, ob dieses Tier ein Hund ist, es könnte eine Katze oder vielleicht sogar eine Giraffe sein. Ohne zusätzliche Informationen können Sie nicht sicher annehmen, dass ich einen Hund habe.
In ähnlicher Weise ist ein abgeleitetes Objekt ein Basisklassenobjekt (da es eine Unterklasse ist), sodass ein Basisklassenzeiger darauf verweisen kann. Ein Basisklassenobjekt ist jedoch kein abgeleitetes Klassenobjekt, sodass es keinem abgeleiteten Klassenzeiger zugewiesen werden kann.
(Das Knarren, das Sie jetzt hören werden, ist die Analogie Dehnung)
Angenommen, Sie möchten mir jetzt ein Geschenk für mein Haustier kaufen.
Im ersten Szenario weißt du, dass es ein Hund ist, du kannst mir eine Leine kaufen, jeder ist glücklich.
Im zweiten Szenario habe ich dir nicht gesagt, was mein Haustier ist. Wenn du mir also trotzdem ein Geschenk kaufen willst, musst du Informationen wissen, die ich dir nicht gesagt habe (oder nur raten), du kaufst mir eine Leine, wenn es so ist Es stellte sich heraus, dass ich wirklich einen Hund hatte, über den alle glücklich sind.
Wenn ich jedoch tatsächlich eine Katze hatte, wissen wir jetzt, dass Sie eine schlechte Annahme gemacht haben (Besetzung) und eine unglückliche Katze an der Leine haben (Laufzeitfehler).
