Sobes.tech
Junior

Kas ir polimorfisms programmēšanā?

sobes.tech AI

Atbilde no AI

Polimorfisms (no grieķu vārda "daudzas formas") ir spēja dažādiem objektiem reaģēt uz to pašu ziņojumu (metodes izsaukumu) dažādos veidos atkarībā no to tipa.

Objektorientētajā programmēšanā polimorfisms ļauj:

  • Darboties ar dažādu klases objektiem caur kopēju saskarni vai pamata klasi.
  • Radīt elastīgāku un paplašināmu kodu.

Galvenie polimorfisma veidi:

  • Kompilācijas laikā (statiskais) polimorfisms: realizējas, izmantojot metožu pārslogojumu (method overloading). Metodes ar vienādu nosaukumu, bet dažādām signatūrām (parametru skaitu vai tipus), tiek definētas vienā klasē.
  • Izpildes laikā (dinamiskais) polimorfisms: realizējas, pārrakstot metodes (method overriding). Apakšklasē metode ir ar tādu pašu signatūru kā vecākklasē. Konkrēta metodes izsaukšana tiek noteikta izpildes laikā, atkarībā no objekta faktiskā tipa.

Piemērs Python valodā (dinamisks polimorfisms):

class Animal:
    def sound(self):
        pass # Pamatmetode, kas tiks pārrakstīta

class Dog(Animal):
    def sound(self):
        # Pārrakstīšana Dog klasē
        print("Woof")

class Cat(Animal):
    def sound(self):
        # Pārrakstīšana Cat klasē
        print("Meow")

# Funkcija, kas strādā ar objektiem caur pamatklasi Animal

def make_animal_sound(animal):
    animal.sound()

# Polimorfisma izmantošana
dog = Dog()
cat = Cat()

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