Polimorfizam (računarstvo)

Izvor: Wikipedija
Jump to navigation Jump to search

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.