Sobes.tech
Junior

Czym jest polimorfizm w programowaniu?

sobes.tech AI

Odpowiedź od AI

Polimorfizm (z greckiego "wiele form") to zdolność różnych obiektów do reagowania na tę samą wiadomość (wywołanie metody) w różny sposób, w zależności od ich typu.

W programowaniu obiektowym polimorfizm pozwala:

  • Pracować z obiektami różnych klas poprzez wspólny interfejs lub klasę bazową.
  • Tworzyć bardziej elastyczny i rozszerzalny kod.

Główne rodzaje polimorfizmu:

  • Polimorfizm w czasie kompilacji (statyczny): realizowany przez przeciążanie metod (method overloading). Metody o tej samej nazwie, ale różnych sygnaturach (liczbie lub typie parametrów), są definiowane w jednej klasie.
  • Polimorfizm w czasie wykonywania (dynamiczny): realizowany przez nadpisanie metod (method overriding). Metoda w klasie potomnej ma taką samą sygnaturę jak w klasie nadrzędnej. To, która metoda zostanie wywołana, jest ustalane podczas wykonywania programu w zależności od rzeczywistego typu obiektu.

Przykład w Pythonie (polimorfizm dynamiczny):

class Animal:
    def sound(self):
        pass # Metoda bazowa, która będzie nadpisana

class Dog(Animal):
    def sound(self):
        # Nadpisanie metody sound dla klasy Dog
        print("Woof")

class Cat(Animal):
    def sound(self):
        # Nadpisanie metody sound dla klasy Cat
        print("Meow")

# Funkcja pracująca z obiektami przez klasę bazową Animal

def make_animal_sound(animal):
    animal.sound()

# Użycie polimorfizmu
dog = Dog()
cat = Cat()

make_animal_sound(dog) # Wywoła Dog.sound() -> Woof
make_animal_sound(cat) # Wywoła Cat.sound() -> Meow