Jakie mechanizmy mogą ułatwiać programiście na to aby w odpowiedni sposób używał wartości, zmiennych oraz innych podprogramów. Z pewnością należy to określić jako polimorfizm. W dużym skrócie można powiedzieć, że to to tak właściwie wyodrębnienie wyrażeń od poszczególnych typów.
Dlaczego programista w swoim autorskim kodzie powinien zastosować polimorfizm. Z pewnością każdy devoloper w czasie tworzenie jakiegoś nowego programu zdaję sobie z tego sprawę, że o wiele bardziej elastyczniej jest traktować różne dane w bardziej ogólny i jednolity sposób. Bez względu na to czy warto wydrukować liczbę, napis czy ciąg znaków o wiele bardziej właściwie będzie to jeśli operacja nazywać się będzie najzwyczajniej drukuj a nie drukuj_wyraz oraz drukuj_liczbę. Warto o tym powiedzieć, że ten napis zostanie inaczej wyświetlony w porównaniu do liczby. Z tego względu istnieć będą jedynie dwie implementację polecenia drukuj. W wielu przypadkach nawet nie należy programować zbyt dużej liczby implementacji. Z tego powodu w momencie napisaniu kodu na stos nie jest to aż tak istotne jakie wartości będą tam przechowywane. Bardzo często programista decyduję się na to aby napisać ogólne algorytmy, które w pewien sposób odpowiadają za stos. Wszystkie te proces mające na celu zminimalizowanie niepotrzebnego kodu nazywać można jako polimorfizm.
Na samym początku należy wymienić dwa typu tego aspektu w programowaniu obiektowym. Warto przytoczyć nazwę jako polimorfizm statyczny oraz polimorfizm dynamiczny. Jak należy je rozróżnić. Z pewnością ten pierwszy dotyczy się wszelkich decyzji podjętych w momencie kompilacji. Jeśli jednak chodzi o polimorfizm dynamiczny to działanie musi zostać odłożone aż do czasu wykonywania programu. Jeśli chodzi o przykład tego statycznego można go wyróżnić jako przeciążenie wszystkich operatorów(chodzi o to, którą decyzję i wersję operatora należy wywołać w czasie podczas komplikacji) jeśli chodzi o dynamiczne, to tak właściwie są to metody wirtualne. Odpowiednia wersja może zostać odpowiednia ustalona w czasie wykonywania programu.
Polimorfizm uniwersalny służy do tego aby opisywać ogólne struktury danych a także algorytmy. Nie należy doprecyzowywać tematu na jakich typach danych one będą operować oraz także nie warto dostarczać implementacji odpowiednich dla właściwego przypadku.
Jak należy określać działanie programu w którym poszczególne fragmenty będą tak właściwie odpowiednio parametryzowane albo po prostu nie określać będą precyzyjnie typów danych. W tym przypadku można mówić o polimorfizm parametryczny. Głównie w językach programowania bez inferencji typów doprowadza się jedynie zmienną typową, która w pewien sposób umożliwia nazwę typu będącego parametrem w poszczególnym fragmencie.
Oprócz tego należy jeszcze powiedzieć sobie informację jako o polimorfizm inkluzyjny. Głównym jego celem jest na pewno zaistnienie zwrotnej a także przechodniej relacji na odpowiednich typach. Ze względu na wartość typu nadrzędnego można w odpowiedni sposób być dostarczona wartość podtypu.