Terug naar begrippenlijst

Polymorphism

Saaie code die steeds hetzelfde doet? Niet als je polymorphism kent. Polymorphism (letterlijk ‘veelvormigheid’) is een fundamenteel concept in de wereld van objectgeoriënteerd programmeren (OOP). Het betekent dat één stuk code zich in verschillende vormen kan gedragen, afhankelijk van de context. Denk aan een kameleon die zich aanpast aan zijn omgeving, maar dan voor je software.

Geschreven door Remco Thijssen

Zwaaiende emoji

Remco Back-end developer

Meer over Remco

Inhoudsopgave

Code met een dubbele agenda

De basis van polymorphism is simpel: je hebt een algemene klasse of methode die je op verschillende manieren kunt invullen. De buitenkant blijft hetzelfde (de interface), maar de binnenkant kan anders zijn, afhankelijk van wat je nodig hebt.

Stel je voor: je hebt een functie print(). Of je nu tekst, cijfers of een afbeelding wilt printen, de functie heet altijd hetzelfde, maar past zich aan aan wat je erin stopt. Dat is polymorphism in actie.

Wat er in die code-koffer zit

Er zijn grofweg twee smaken: overriding en overloading.

Overriding: In een hiërarchie van klassen kun je een methode uit een superklasse opnieuw definiëren in een subklasse. Zo kun je de standaardfunctionaliteit aanpassen. Een Dier kan bijvoorbeeld een maakGeluid()-methode hebben. Voor een Hond roep je dezelfde methode aan, maar je krijgt ‘Woef!’ in plaats van ‘Onbekend geluid’.

Overloading: Hier geef je meerdere methodes dezelfde naam, maar met verschillende parameters. De compiler weet op basis van de input welke versie hij moet gebruiken. Zo kun je bijvoorbeeld dezelfde bereken()-methode gebruiken voor een getal en voor een reeks getallen.

De superkracht van slimme code

Polymorphism maakt code een stuk flexibeler en onderhoudsvriendelijker. Je hoeft geen eindeloze if-statements te schrijven voor elk apart geval. In plaats daarvan laat je je objecten zelf bepalen hoe ze zich gedragen. Nieuwe functies toevoegen? Geen probleem! Je past de subklasse aan zonder de rest van je code te slopen.

Polymorphism buiten de lijntjes

Hoewel polymorphism vooral bekend is in OOP-talen zoals Java, C# en Python, vind je het concept ook terug in functionele en generieke programmeertalen. Het idee (één interface met meerdere vormen) blijft hetzelfde.

Veelgestelde vragen

Letterlijk betekent het ‘veelvormigheid’. In software betekent het dat één methode of interface zich in meerdere vormen kan gedragen.

Ze zijn verwant, maar niet hetzelfde. Inheritance (overerving) gaat over het doorgeven van eigenschappen van een superklasse aan een subklasse. Polymorphism zorgt ervoor dat die subklasse methodes kan aanpassen of uitbreiden.

Het maakt je code flexibeler, herbruikbaar en makkelijker uit te breiden. Daardoor hoef je minder te dupliceren.

Vooral in objectgeoriënteerde talen zoals Java, Python, C#, maar ook in C++ en andere moderne talen.

Remco Thijssen Back-end developer

Meer over Remco

Ik heb de opleiding Applicatie en mediaontwikkelaar niveau 4 gevolgd bij Gildeopleidingen in Venray. Daarnaast ben ik momenteel aan het afstuderen aan de HAN voor de opleiding HBO-ICT in Arnhem. Dit is een deeltijdopleiding die ik volg naast mijn werk bij Wux. Ik werk sinds 2021 bij Wux als back-end developer. Hier ben ik als stagiaire begonnen. Ondertussen ben ik doorgegroeid en heb ik meerdere functies zoals back-end developer en projectmanager. Dit betekent dat ik alles wat ik tijdens mijn studie leer kan toepassen in mijn werk, maar ook veel praktijkervaring op doe naast de theorie. Ik pak complexe problemen aan en ben altijd op zoek naar de beste oplossing. Dit doe ik door mijn kennis die ik heb opgedaan toe te passen en up to date te blijven met de nieuwste technieken.

Twee mannen in overleg tijdens het werk achter hun computerschermen
Zwaaiende emoji

Thijn Back-end developer

Op zoek naar slimme software-oplossingen die jouw bedrijf efficiënter maken?

Het team van Wux ontwikkelt maatwerk software die aansluit bij jouw behoeften. Neem vandaag nog contact op en ontdek hoe we jouw bedrijf elke dag succesvoller kunnen maken.

Meer over software