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