Sobes.tech
Junior

Čo je to polymorfizmus v programovaní?

sobes.tech AI

Odpoveď od AI

Polymorfizmus (z gréckeho "mnoho tvarov") je schopnosť rôznych objektov reagovať na rovnakú správu (volanie metódy) rôznym spôsobom v závislosti od ich typu.

V objektovo orientovanom programovaní umožňuje polymorfizmus:

  • Prácu s objektmi rôznych tried prostredníctvom spoločného rozhrania alebo základnej triedy.
  • Vytváranie flexibilnejšieho a rozšíriteľnejšieho kódu.

Hlavné typy polymorfizmu:

  • Compile-time (statický) polymorfizmus: realizuje sa cez preťaženie metód (method overloading). Metódy s rovnakým názvom, ale rôznymi signatúrami (počet alebo typy parametrov), sú definované v jednej triede.
  • Run-time (dynamický) polymorfizmus: realizuje sa cez prepísanie metód (method overriding). Metóda v odvodené triede má rovnakú signatúru ako tá v základnej triede. Ktorá metóda bude volaná, sa určuje počas behu v závislosti od skutočného typu objektu.

Príklad v Pythone (dynamický polymorfizmus):

class Animal:
    def sound(self):
        pass # Základná metóda, ktorá bude prepísaná

class Dog(Animal):
    def sound(self):
        # Prepísanie metódy sound pre triedu Dog
        print("Woof")

class Cat(Animal):
    def sound(self):
        # Prepísanie metódy sound pre triedu Cat
        print("Meow")

# Funkcia, ktorá pracuje s objektmi cez základnú triedu Animal

def make_animal_sound(animal):
    animal.sound()

# Použitie polymorfizmu
dog = Dog()
cat = Cat()

make_animal_sound(dog) # Zavolá Dog.sound() -> Woof
make_animal_sound(cat) # Zavolá Cat.sound() -> Meow