Przykładowo implementacja homogenicznego zbioru wymaga, aby można było sprawdzać równość przechowywanych obiektów, więc przykładowo parametr ogólnej implementacji może być ograniczony jedynie do klas posiadających funkcję equals. Ograniczenia przeważnie polegają na wspomnianej już relacji „<:”, czyli na byciu nadtypem lub podtypem, dlatego polimorfizm ograniczeniowy często traktowany jest jako połączenie polimorfizmów parametrycznego z inkluzyjnym.

Polimorfizm ad-hoc Pozwala dostarczyć kilku implementacji odpowiednich dla różnych typów, ale połączyć je w jeden interfejs, następnie używać tego interfejsu, a wybór najbardziej odpowiedniej implementacji pozostawić systemowi (kompilatorowi, systemowi czasu wykonania). Najczęściej chodzi tu o wybór algorytmu odpowiedniego do typów danych.