Polimorfizam (računarstvo)

Izvor: Wikipedija

Polimorfizam (eng. 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 (eng. subclass) i super klase (eng. superclass) dolaze iz pojma nasljeđivanje (eng. 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 (eng. pure) apstraktne klase što znači da je iz klase A nemoguće instancirati objekt.