Sobes.tech
Junior

Wat is polymorfisme in programmeren?

sobes.tech AI

Antwoord van AI

Polymorfisme is het vermogen van objecten van verschillende klassen om verschillend te reageren op dezelfde methode-aanroep. Dit wordt bereikt door gebruik te maken van erfelijkheid, abstracte klassen en interfaces. In C# manifesteert polymorfisme zich door het overschrijven (overriding) van methoden van de basisklasse in afgeleide klassen en door method overloading.

Voorbeelden van polymorfisme:

  1. Methoden overschrijven (Runtime Polymorfisme): De afgeleide klasse biedt zijn eigen implementatie van een in de basisklasse gedeclareerde methode. Hiervoor wordt in de basisklasse het sleutelwoord virtual gebruikt, en in de afgeleide klasse override.

    // Basisklasse
    class Shape
    {
        // Virtuele methode die overschreven kan worden
        public virtual void Draw()
        {
            // Standaard implementatie
        }
    }
    
    // Afgeleide klasse 1
    class Circle : Shape
    {
        // Overschrijven van de Draw-methode
        public override void Draw()
        {
            // Implementatie voor cirkel
        }
    }
    
    // Afgeleide klasse 2
    class Square : Shape
    {
        // Overschrijven van de Draw-methode
        public override void Draw()
        {
            // Implementatie voor vierkant
        }
    }
    

    In dit geval kan een lijst van Shape-objecten worden gemaakt en de Draw-methode voor elk worden aangeroepen, en de specifieke implementatie voor elk figuurtype wordt uitgevoerd.

  2. Method overloading (Compile-time Polymorfisme): Meerdere methoden met dezelfde naam, maar met verschillende handtekeningen (aantal of types van parameters) in één klasse.

    class Calculator
    {
        // Overbelaste methode Add (voor int)
        public int Add(int x, int y)
        {
            return x + y;
        }
    
        // Overbelaste methode Add (voor double)
        public double Add(double x, double y)
        {
            return x + y;
        }
    }
    

Polymorfisme bevordert het maken van flexibelere, uitbreidbare en onderhoudsvriendelijkere code. Het maakt het mogelijk om generieke code te schrijven die met objecten van verschillende types kan werken.