Labo: Polymorfisme

Zie Scherp Scherper - Hoofdstuk 16 (in opbouw)

Hoofdstuk 16 in een notendop

Een child past in een variabele van de parent: upcasting

Late binding kiest de override van het echte object

is test een type, as zet om of geeft null

Pattern matching: is met een naam erachter test én zet om

Een cast met haakjes kan crashen

List<Dier> zoo = new List<Dier>();
zoo.Add(new Varken());      // upcasting
zoo.Add(new Paard());

foreach (Dier dier in zoo)
{
    Console.WriteLine(dier.MaakGeluid()); // late binding
}

Dier mijnDier = zoo[0];
Console.WriteLine(mijnDier is Paard);
Paard paard = mijnDier as Paard;
Console.WriteLine(paard == null);
Oinkoink
Hinnikhinnik
False
True

De oefeningen

Code lezen en verbeteren

Wie neemt het woord? Stevens dierenshow Stevens Pokédex

Polymorfisme toepassen

Een eigen huis Luchtvaartshow Dierentuin advanced

Oude examenopgave

Ganzenbord Dams Van Camp editie

Alles samen

Grand Theft Auto: San Andreas Final Essentials, GPT

Oefeningen H16

Alles is Essential, behalve de gestippelde.

Nieuw in H16

Child in parent-variabele: enkel wat de parent kent

virtual of abstract? Gewoon oproepen, geen is per soort

Enkel bij een child: if (dier is Koe koe)

(Koe)dier kan crashen, as geeft null: controleer