Sobes.tech
Junior

Kas yra polimorfizmas programavime?

sobes.tech AI

Atsakymas iš AI

Polimorfizmas (iš graikų kalbos "daug formų") yra gebėjimas skirtingų objektų reaguoti į tą patį pranešimą (metodo iškvietimą) skirtingai, priklausomai nuo jų tipo.

Objektų orientuotame programavime polimorfizmas leidžia:

  • Dirbti su skirtingų klasių objektais per bendrą sąsają arba pagrindinę klasę.
  • Kurti lankstesnį ir išplečiamesnį kodą.

Pagrindiniai polimorfizmo tipai:

  • Kompiliavimo laiko (statinis) polimorfizmas: realizuojamas per metodų perkrovimą (method overloading). Metodai su tuo pačiu pavadinimu, bet skirtingomis parašais (parametrų kiekiu arba tipu), apibrėžiami vienoje klasėje.
  • Vykdymo laiko (dinaminis) polimorfizmas: realizuojamas per metodų perrašymą (method overriding). Vaikų klasėje metodas turi tą pačią parašą kaip ir tėvų klasėje. Konkretus iškvietimas nustatomas vykdymo metu priklausomai nuo objekto tikrojo tipo.

Pavyzdys Python kalba (dinaminis polimorfizmas):

class Animal:
    def sound(self):
        pass # Pagrindinis metodas, kuris bus perrašytas

class Dog(Animal):
    def sound(self):
        # Perrašymas Dog klasės
        print("Woof")

class Cat(Animal):
    def sound(self):
        # Perrašymas Cat klasės
        print("Meow")

# Funkcija, dirbanti su objektais per pagrindinę klasę Animal

def make_animal_sound(animal):
    animal.sound()

# Polimorfizmo panaudojimas
dog = Dog()
cat = Cat()

make_animal_sound(dog) # Iškvies Dog.sound() -> Woof
make_animal_sound(cat) # Iškvies Cat.sound() -> Meow