Sobes.tech
Junior

Mi a polimorfizmus a programozásban?

sobes.tech MI

Válasz az MI-től

Polimorfizmus (a görög "sok alak" kifejezésből) az a képesség, hogy különböző objektumok ugyanarra az üzenetre (metódushívásra) különböző módon reagáljanak, az adott típusuktól függően.

Az objektum-orientált programozásban a polimorfizmus lehetővé teszi:

  • Különböző osztályok objektumaival közös interfész vagy ősosztály segítségével dolgozni.
  • Rugalmasabb és bővíthetőbb kód írását.

A polimorfizmus fő típusai:

  • Fordítási időben (statikus) polimorfizmus: metódus túlterheléssel (method overloading) valósul meg. Ugyanazzal a névvel, de különböző szignatúrákkal (paraméterek számával vagy típusával) rendelkező metódusokat egy osztályban definiálnak.
  • Futási időben (dinamikus) polimorfizmus: metódus felülírással (method overriding) valósul meg. Egy leszármazott osztályban ugyanazzal a szignatúrával rendelkező metódus van, mint az ősosztályban. A melyik metódus hívódik meg, futásidőben dől el az objektum tényleges típusától függően.

Python példával (dinamikus polimorfizmus):

class Animal:
    def sound(self):
        pass # Alapmetódus, felülíródik

class Dog(Animal):
    def sound(self):
        # A Dog osztály sound metódusának felülírása
        print("Woof")

class Cat(Animal):
    def sound(self):
        # A Cat osztály sound metódusának felülírása
        print("Meow")

# Függvény, amely az ősosztályt használva dolgozik az objektumokon

def make_animal_sound(animal):
    animal.sound()

# Polimorfizmus használata
dog = Dog()
cat = Cat()

make_animal_sound(dog) # Meghívja a Dog.sound() -> Woof
make_animal_sound(cat) # Meghívja a Cat.sound() -> Meow