Sobes.tech
Junior

Šta je polimorfizam u programiranju?

sobes.tech АИ

Одговор од АИ

Polimorfizam je sposobnost objekata različitih klasa da reaguju na isti poziv metode na različite načine. To se postiže korišćenjem nasleđivanja, apstraktnih klasa i interfejsa. U C#-u, polimorfizam se manifestuje kroz prepisivanje (overriding) metoda osnovne klase u izvedenim klasama i kroz preopterećenje (overloading) metoda.

Primeri polimorfizma:

  1. Prepisivanje metoda (Polimorfizam u vreme izvršavanja): Izvedena klasa pruža sopstvenu implementaciju metode deklarisane u osnovnoj klasi. Za to se u osnovnoj klasi koristi ključna reč virtual, a u izvedenoj override.

    // Osnovna klasa
    class Shape
    {
        // Virtuelna metoda koja može biti prepisana
        public virtual void Draw()
        {
            // Podrazumevana implementacija
        }
    }
    
    // Izvedena klasa 1
    class Circle : Shape
    {
        // Prepisivanje metode Draw
        public override void Draw()
        {
            // Implementacija za krug
        }
    }
    
    // Izvedena klasa 2
    class Square : Shape
    {
        // Prepisivanje metode Draw
        public override void Draw()
        {
            // Implementacija za kvadrat
        }
    }
    

    U ovom slučaju, može se napraviti lista objekata Shape i pozvati metoda Draw za svaki od njih, a biće pozvana specifična implementacija za svaki tip figure.

  2. Preopterećenje metoda (Polimorfizam u vreme kompajliranja): Više metoda sa istim imenom, ali različitim potpisima (brojem ili tipovima parametara) u istoj klasi.

    class Calculator
    {
        // Preopterećena metoda Add (za int)
        public int Add(int x, int y)
        {
            return x + y;
        }
    
        // Preopterećena metoda Add (za double)
        public double Add(double x, double y)
        {
            return x + y;
        }
    }
    

Polimorfizam podstiče kreiranje fleksibilnijeg, proširivijeg i lakšeg za održavanje koda. Omogućava pisanje opšteg koda koji može raditi sa objektima različitih tipova.