Sobes.tech
Junior

Čo je to polymorfizmus v programovaní?

sobes.tech AI

Odpoveď od AI

Polymorfizmus je schopnosť objektov rôznych tried reagovať odlišne na rovnaké volanie metódy. Dosahuje sa to použitím dedičnosti, abstraktných tried a rozhraní. V C# sa polymorfizmus prejavuje prepísaním (overriding) metód základnej triedy v odvodených triedach a preťažením (overloading) metód.

Príklady polymorfizmu:

  1. Prepísanie metód (Polymorfizmus za behu): Odvodená trieda poskytne vlastnú implementáciu metódy deklarovanej v základnej triede. Na to sa v základnej triede používa kľúčové slovo virtual, v odvodených override.

    // Základná trieda
    class Shape
    {
        // Virtuálna metóda, ktorú možno prepísať
        public virtual void Draw()
        {
            // Predvolená implementácia
        }
    }
    
    // Odvodená trieda 1
    class Circle : Shape
    {
        // Prepísanie metódy Draw
        public override void Draw()
        {
            // Implementácia pre kruh
        }
    }
    
    // Odvodená trieda 2
    class Square : Shape
    {
        // Prepísanie metódy Draw
        public override void Draw()
        {
            // Implementácia pre štvorec
        }
    }
    

    V tomto prípade je možné vytvoriť zoznam objektov Shape a volať metódu Draw pre každý z nich, pričom bude volaná špecifická implementácia pre každý typ figúry.

  2. Preťaženie metód (Polymorfizmus v čase kompilácie): Viacero metód s rovnakým názvom, ale s rôznymi podpismi (počet alebo typy parametrov) v jednej triede.

    class Calculator
    {
        // Preťažená metóda Add (pre int)
        public int Add(int x, int y)
        {
            return x + y;
        }
    
        // Preťažená metóda Add (pre double)
        public double Add(double x, double y)
        {
            return x + y;
        }
    }
    

Polymorfizmus podporuje tvorbu flexibilnejšieho, rozšíriteľného a ľahko udržiavateľného kódu. Umožňuje písanie všeobecného kódu, ktorý môže pracovať s objektmi rôznych typov.