Sobes.tech
Junior

Na czym polega sens polimorfizmu w programowaniu?

sobes.tech AI

Odpowiedź od AI

Polimorfizm pozwala na używanie obiektów różnych klas, które mają wspólny interfejs, poprzez wspólny "typ" (np. bazową klasę lub interfejs).

Jego główny sens:

  • Ujednolicenie pracy z obiektami: Pozwala pisać kod, który nie zależy od konkretnego typu obiektu, lecz działa z nim przez abstrakcję.
  • Elastyczność: Łatwo dodawać nowe klasy implementujące ten sam interfejs, bez zmiany istniejącego kodu korzystającego z tej abstrakcji.
  • Czytelność i utrzymanie: Kod staje się bardziej uporządkowany i zrozumiały, ponieważ ukrywa złożoność konkretnej implementacji za jednym interfejsem.

Zasada polega na tym, że ta sama metoda, wywoływana na różnych obiektach, zachowuje się inaczej, w zależności od ich konkretnego typu.

Przykład w PHP:

<?php

interface Animal {
    public function makeSound();
}

class Dog implements Animal {
    public function makeSound() {
        return "Woof!";
    }
}

class Cat implements Animal {
    public function makeSound() {
        return "Meow!";
    }
}

function hearAnimalSound(Animal $animal) {
    echo $animal->makeSound() . "\n";
}

$dog = new Dog();
$cat = new Cat();

hearAnimalSound($dog); // Wypisze "Woof!"
hearAnimalSound($cat); // Wypisze "Meow!"

?>

W tym przykładzie funkcja hearAnimalSound przyjmuje dowolny obiekt, który implementuje interfejs Animal. Wywołanie metody makeSound() w tej funkcji zachowuje się różnie dla obiektów Dog i Cat, demonstrując polimorfizm.