Hi,
Es muss richtig heißen:
1 | public class Schlange: Tier
|
2 | {
|
3 | public override void Ausgabe()
|
4 | {
|
5 | Console.WriteLine("Ich bin eine Schlange");
|
6 | }
|
7 | }
|
mit new überlagerst du nur, das heist dass die Methode der Klasse
aufgerufen wird, von deren Typ die Variable ist.
Mit override wird wirklich überschrieben und es wird die Methode des
Objekts hinter der Variable aufgerufen.
Zu 1: Nein es wird noch kein Objekt erzeugt, du legst lediglich eine
Variable an (welche noch den Wert null hat, also noch auf kein Objekt im
Speicher zeigt)
Zu 2: Es wird ein Objekt vom Typ Schlange erzeugt und der Variable
EineSchlange zugewiesen. (Objekte selbst haben keinen Namen)
Zu 3: Du weist das Objekt auf welches EineSchlange zeigt der (noch
uninitialisierten) Variable EinTier zu. Nach diesem Schritt zeigen
EinTier und EineSchlange auf das selbe Objekt im Speicher.
(Ich vermute in 4. oder 5. Zeile im Main sollte stehen EinTier.Ausgabe()
Dann ergibt sich folgende Ausgabe
(Mit override)
Ich bin eine Schlange
Ich bin eine Schlange
(Mit new & EinTier.Ausgabe() als 4. Zeile)
Ich bin Nichts...
Ich bin eine Schlange
)
Im Anhang noch ein Bild zur Verdeutlichung
greets