Sobes.tech
Junior

V čem spočívá smysl polymorfismu v programování?

sobes.tech AI

Odpověď od AI

Polymorfismus umožňuje používat objekty různých tříd, které mají společné rozhraní, prostřednictvím společného "typu" (například základní třídy nebo rozhraní).

Jeho hlavní smysl:

  • Unifikace práce s objekty: Umožňuje psát kód, který nezávisí na konkrétním typu objektu, ale s ním pracuje prostřednictvím abstrakce.
  • Flexibilita: Je snadné přidávat nové třídy, které implementují stejné rozhraní, aniž by bylo nutné měnit stávající kód, který toto rozhraní využívá.
  • Čitelnost a udržovatelnost: Kód je strukturovanější a srozumitelnější, protože složitost konkrétní implementace je skryta za jednotné rozhraní.

Princip spočívá v tom, že stejná metoda, volaná na různých objektech, se chová odlišně v závislosti na jejich konkrétním typu.

Příklad v 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); // Vytiskne "Woof!"
hearAnimalSound($cat); // Vytiskne "Meow!"

?>

V tomto příkladu funkce hearAnimalSound přijímá jakýkoli objekt, který implementuje rozhraní Animal. Volání metody makeSound() uvnitř této funkce se chová odlišně pro objekty Dog a Cat, čímž demonstruje polymorfismus.