ano, vrati to, co jsem do ni dal, jenze jelikoz do ni muzu dat pouze objekt typu te kolekce, tak se musi potomci pretypovat, tudiz nasledujici kod bude delat to, co je napsane v komentarich
List<Rodic> kolekce = new List<Rodic>();
kolekce.add(new Potomek()); // objekt se pretypuje na Rodic, do kolekce se ulozi typ Rodic, ne Potomek
kolekce[0]; // vrati typ Rodic
Bude to pořád potomek, bude dělat věci jako potomek, i když se v kolekci tváří jako rodič. Když v potomkovi přepíšeš metodu a pak ji po vytažení z kolekce zavoláš, bude volat metodu potomka, ne rodiče.
zalezi na situaci... nicmene nejde o to, jak se bude chovat, ale jakeho bude typu
tim, ze bude typu Rodic nemuzu zavolat metody, ktere ma pouze potomek... to stejne, kdyz se napriklad "pretypuje" na interface, ktery pouziva (taky budu moci zavolat pouze metody, ktere ma dane rozhrani)
tim se ale vzdalujeme od toho, co jsem mel na mysli -> a to, ze v kolekci budou mit vsechny objekty stejny typ, protoze je c# typovy jazyk -> neni mozne ulozit dva uplne rozdilne objekty do stejne kolekce
bez pretypovani (ano, kdyz vytvorim List<object>, tak tam narvu vsechno mozne, ale ztratim puvodni typ a schopnosti, aniz by byla nutna dalsi konverze)