Den här artikeln behöver källhänvisningar för att kunna verifieras. (2016-10) Åtgärda genom att lägga till pålitliga källor (gärna som fotnoter). Uppgifter utan källhänvisning kan ifrågasättas och tas bort utan att det behöver diskuteras på diskussionssidan. |
Polymorfism innebär inom programmering att en symbol, till exempel en variabel, inte har en fix datatyp utan att datatypen kan ändras under programmets gång. Variabeln kan till exempel börja med att vara en enkel variabeltyp, till exempel ett heltal (integer), och sedan bli en sammansatt variabeltyp (till exempel en array, eller ett objekt, eller en array av objekt), eller en funktion.
Objektorienterade språk med statiska datatyper, till exempel C++ och Java, har bara möjlighet till begränsad polymorfism genom underklasser. Procedurorienterade språk med statiska datatyper som C och Pascal saknar polymorfism.
Genuint polymorfa språk som Javascript har däremot polymorfismen inbyggd i språket så där definierar man ingen datatyp då man deklarerar en variabel utan datatypen avgörs av vilket värde variabeln senare tilldelas i programmet. I till exempel Javascript skriver man bara "var" då man deklarerar en variabel. Exempel i Javascript:
var a; // a är en variabel, datatypen ännu odefinierad ........ a = 23; // a är ett tal (Javascript skiljer inte på heltal och flyttal) ........ a = "Text"; // a är en textsträng ........ a = [ 23, 45, 67 ]; // a är en array av tre tal ........ a = AnythingElse; // a har nu samma datatyp som "AnythingElse" ........ a = [ "Text1", 23, AnythingElse ]; // a är en array som innehåller blandade datatyper ........
Script-språk som Javascript, Perl, PHP, Python brukar ha polymorfa variabler. Fördelen är större flexibilitet, nackdelen är att man inte har tillgång till strikt typkontroll som hjälpmedel vid avlusning.