Sobes.tech
Junior

Mis on polümorfism programmeerimises?

sobes.tech AI

Vastus AI-lt

Polümorfism — see on võime erinevatel klassidel olevatel objektidel reageerida samale meetodi väljakutsele erinevalt. Seda saavutatakse päriluse, abstraktsete klasside ja liideste kasutamisega. C#-s väljendub polümorfism põhiklassi meetodite ülekirjutamises (overriding) ja ülekoormamises (overloading):

Polümorfismi näited:

  1. Meetodite ülekirjutamine (Runtime Polymorphism): Päriliku klassi pakub oma versiooni põhiklassi meetodist, mille märgib virtual. Seda tehakse override võtmesõnaga.

    // Põhiklass
    class Shape
    {
        // Virtuaalne meetod, mida saab ülekirjutada
        public virtual void Draw()
        {
            // Vaikimisi rakendus
        }
    }
    
    // Pärilik klass 1
    class Circle : Shape
    {
        // Meetodi ülekirjutamine
        public override void Draw()
        {
            // Ringile rakendus
        }
    }
    
    // Pärilik klass 2
    class Square : Shape
    {
        // Meetodi ülekirjutamine
        public override void Draw()
        {
            // Ristküliku rakendus
        }
    }
    

    Selle puhul saab luua Shape objektide nimekirja ja kutsuda Draw igaühel ning kutsutakse välja konkreetne rakendus iga kuju tüübi jaoks.

  2. Ülekoormus (Compile-time Polymorphism): Mitmed meetodid sama nimega, kuid erinevate signatuuridega (parameetrite arv või tüübid) ühes klassis.

    class Calculator
    {
        // Ülekoormatud meetod Add (int)
        public int Add(int x, int y)
        {
            return x + y;
        }
    
        // Ülekoormatud meetod Add (double)
        public double Add(double x, double y)
        {
            return x + y;
        }
    }
    

Polümorfism soodustab paindlikumat, laiendatavamat ja kergemini hooldatavat koodi. See võimaldab kirjutada üldist koodi, mis saab töötada erinevat tüüpi objektidega.