Sobes.tech
Junior

Co je to polymorfismus v programování?

sobes.tech AI

Odpověď od AI

Polymorfismus je schopnost objektů různých tříd reagovat odlišně na stejný volání metody. Toho se dosahuje pomocí dědičnosti, abstraktních tříd a rozhraní. V C# se polymorfismus projevuje přepsáním (overriding) metod základní třídy v odvozených třídách a přetížením (overloading) metod.

Příklady polymorfismu:

  1. Přepsání metod (Polymorfismus za běhu): Odvozená třída poskytne vlastní implementaci metody deklarované v základní třídě. K tomu se v základní třídě používá klíčové slovo virtual, v odvozené override.

    // Základní třída
    class Shape
    {
        // Virtuální metoda, kterou lze přepsat
        public virtual void Draw()
        {
            // Výchozí implementace
        }
    }
    
    // Odvozená třída 1
    class Circle : Shape
    {
        // Přepsání metody Draw
        public override void Draw()
        {
            // Implementace pro kruh
        }
    }
    
    // Odvozená třída 2
    class Square : Shape
    {
        // Přepsání metody Draw
        public override void Draw()
        {
            // Implementace pro čtverec
        }
    }
    

    V tomto případě lze vytvořit seznam objektů Shape a volat metodu Draw pro každý z nich, a bude volána konkrétní implementace pro každý typ tvaru.

  2. Přetížení metod (Polymorfismus za kompilace): Více metod se stejným názvem, ale s různými podpisy (počet nebo typy parametrů) ve stejné třídě.

    class Calculator
    {
        // Přetížená metoda Add (pro int)
        public int Add(int x, int y)
        {
            return x + y;
        }
    
        // Přetížená metoda Add (pro double)
        public double Add(double x, double y)
        {
            return x + y;
        }
    }
    

Polymorfismus podporuje tvorbu flexibilnějšího, rozšiřitelného a snadno udržovatelného kódu. Umožňuje psát obecný kód, který může pracovat s objekty různých typů.