Polimorfizam (engl. polymorphism), ili jednostavno "moć poprimanja više oblika" je osobina po kojoj metoda ima parametre različitih tipova. Npr. dodaj()
metoda može imati brojčane parametre ili tekstualne, ovisno o upotrebi:
// primjer u Javi
public class PrimjerPolimorfizma {
/**
* Dodaj broj trenutnoj vrijednosti. Npr. ako nam je trenutna
* vrijednost 5, onda dodaj(6) mijenja trenutnu vrijednost u
* 11.
*/
public void dodaj(int broj) {
mojBroj += broj;
}
/**
* Dodaj broj trenutnoj vrijednosti. Npr. ako nam je trenutna
* vrijednost 'Pozdrav', onda dodaj('Ljudi') mijenja trenutnu
* vrijednost u 'PozdravLjudi'.
*/
public void dodaj(String tekst) {
mojTekst += tekst;
}
private int mojBroj = 0;
private String mojTekst = null;
}
Polimorfizam također omogućuje da se adresa objekta podklase pohranjuje u pokazivač tipa njegove super klase (termini podklase (engl. subclass) i super klase (engl. superclass) dolaze iz pojma nasljeđivanje (engl. inheritance):
//primjer u C++
class A {
public:
virtual void method() = 0;
};
class B : public A {
public:
void method() {
cout << "Hello, World." << endl;
}
};
int main()
{
A *p = new B; //Iako je pokazivač tipa A, zbog polimorfizma mu je moguće pridružiti B
p->method(); //Na ekranu će se ispisati Hello, World.
return 0;
}
U gornjem je primjeru klasa A primjer čiste (engl. pure) apstraktne klase što znači da je iz klase A nemoguće instancirati objekt.