Beseda Polimorfizem izhaja iz grščine in dobesedno pomeni "mnogoličnost" oziroma sposobnost prevzemanja več oblik. V objektno usmerjenem programiranju to pomeni, da lahko različni razredi implementirajo enako imenovano metodo, vendar jo vsak izvede na svoj specifičen način. Ko to metodo pokličemo, PHP v ozadju samodejno ugotovi, kateremu objektu pripada, in zažene pravilno kodo.
Predstavljaj si univerzalni daljinski upravljalnik z gumbom PLAY. Ta gumb je ena sama metoda, ki jo lahko pritisneš na različnih napravah (objektih):
Ukaz oziroma klic metode je vedno popolnoma enak (play()), vendar je končni rezultat odvisen od
naprave, s katero upravljaš. To je polimorfizem v praksi!
Glavna moč polimorfizma je v tem, da nam omogoča pisanje izjemno prilagodljive kode. Ustvarimo lahko eno glavno funkcijo, ki sprejme splošen tip (npr. vmesnik ali starševski razred), nato pa ji lahko brez spreminjanja kode preimenujemo katerikoli podrazred.
Če bi v prihodnosti tvoji aplikaciji dodal nov razred (npr. ElektricniSkuter), ti ne bo treba
spreminjati obstoječih funkcij za vožnjo. Dokler skuter sledi enakim pravilom in ima metodo za premik, bo sistem
deloval brez ene same modifikacije!
Začetniki ta dva pojma pogosto mešajo, saj sta tesno povezana. Poglej si njun medsebojni odnos:
| Koncept OOP | Glavni cilj | Pristop v kodi |
|---|---|---|
| Dedovanje | Ponovna uporaba kode (DRY). | Otrok vzame kodo od starša, da mu je ni treba pisati znova. |
| Polimorfizem | Prilagodljivost in enoten vmesnik. | Različni otroci imajo istoimenske metode s povsem različnim delovanjem. |