Sobes.tech
Junior

Kas yra polimorfizmas programavime?

sobes.tech AI

Atsakymas iš AI

Polimorfizmas — tai gebėjimas objektų iš skirtingų klasių reaguoti į tą patį metodo iškvietimą skirtingai. Tai pasiekiama naudojant paveldėjimą, abstrakčius klases ir sąsajas. C# polimorfizmas išreiškiamas per bazinio metodo perrašymą (overriding) ir perkrovimą (overloading):

Polimorfizmo pavyzdžiai:

  1. Metodų perrašymas (Runtime Polymorphism): Paveldėtas klasė pateikia savo versiją bazinio klasės metodo, žymimo virtual. Tai daroma naudojant override raktinį žodį.

    // Bazinis klasė
    class Shape
    {
        // Virtualus metodas, kurį galima perrašyti
        public virtual void Draw()
        {
            // Numatytoji įgyvendinimas
        }
    }
    
    // Paveldėta klasė 1
    class Circle : Shape
    {
        // Perrašyti metodą Draw
        public override void Draw()
        {
            // Įgyvendinimas apskritimui
        }
    }
    
    // Paveldėta klasė 2
    class Square : Shape
    {
        // Perrašyti metodą Draw
        public override void Draw()
        {
            // Įgyvendinimas kvadratui
        }
    }
    

    Šiuo atveju galima sukurti Shape objektų sąrašą ir iškviesti Draw metodą kiekvienam, ir bus iškviesta konkreti įgyvendinimas.

  2. Perkraustymas (Compile-time Polymorphism): Kelios metodų versijos su tuo pačiu pavadinimu, bet skirtingais parametrais (kiekis ar tipas) viename klase.

    class Calculator
    {
        // Perkrautas metodas Add (int)
        public int Add(int x, int y)
        {
            return x + y;
        }
    
        // Perkrautas metodas Add (double)
        public double Add(double x, double y)
        {
            return x + y;
        }
    }
    

Polimorfizmas padeda kurti lankstesnį, plėtojamas ir lengvai palaikomą kodą. Jis leidžia rašyti bendrą kodą, kuris gali dirbti su skirtingų tipų objektais.