Graduately/content/programovani/3-rocnik/06-polymorfismus.md
pepaskopec-blip 333085ee53 Add a C# course with a side-by-side code runner.
Each lesson explains a topic and runs the edited program next to the text through the local .NET SDK.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-11 14:37:14 +02:00

1 KiB

id nazev popis
cs-3-polymorfismus Polymorfismus Stejné volání, jiná odpověď potomka.

Výklad

virtual a override

přepsání

  • virtual u předka dovolí potomkovi metodu vyměnit.
  • override u potomka řekne, že jde o tu samou metodu.
  • Bez virtual by potomek jen schoval jméno a přes typ předka by se volala stará verze.

Tip: Proměnná je Zvire, objekt je Pes. Zavolá se štěk, ne obecné zvíře.

Seznam

víc tvarů

  • Do pole Zvire lze dát psa i kočku.
  • foreach volá Zvuk a každý objekt odpoví po svém.
  • Nové zvíře přidáte třídou, ne úpravou smyčky.

Tip: Přidejte do pole kočku a třetí řádek výstupu bude mňau.

Kód

Zvire[] zvirata = { new Pes(), new Kocka() };
foreach (Zvire z in zvirata)
{
    Console.WriteLine(z.Zvuk());
}

class Zvire
{
    public virtual string Zvuk() { return "..."; }
}

class Pes : Zvire
{
    public override string Zvuk() { return "haf"; }
}

class Kocka : Zvire
{
    public override string Zvuk() { return "mňau"; }
}