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.
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.