Comment implémenter le polymorphisme en PHP ?

WBOY
Libérer: 2024-06-04 15:17:00
original
570 Les gens l'ont consulté

Le polymorphisme en PHP permet à différents objets de partager la même interface tout en ayant des comportements uniques. Implémentation via des interfaces et des classes abstraites : les interfaces définissent les signatures de méthodes sans fournir d'implémentations. L'objet doit implémenter toutes les méthodes de l'interface. Les classes abstraites contiennent des méthodes non implémentées qui ne peuvent être implémentées que dans des sous-classes. Exemple pratique : Définir l'interface de comportement animal AnimalActions. Définissez la classe animale abstraite Animal, qui possède la méthode abstraite makeSound. Créez des classes d'animaux concrètes Chien et Chat, implémentez AnimalActions et makeSound. Créez une classe Zoo pour gérer les animaux. Ajoutez des animaux au zoo et exécutez leur méthode de conversation, en affichant « Buddy aboie » et « Fluffy miaou ».

Comment implémenter le polymorphisme en PHP ?

Polymorphisme en PHP

Le polymorphisme est une fonctionnalité importante dans la programmation orientée objet, qui permet à différents objets d'avoir la même interface tout en conservant leur propre comportement unique. En PHP, le polymorphisme peut être réalisé à l'aide d'interfaces et de classes abstraites.

Interface

Une interface définit une liste de signatures de méthodes sans fournir d'implémentation réelle. Les objets doivent implémenter toutes les méthodes définies dans l'interface, ce qui permet aux objets ayant des comportements spécifiques différents d'être considérés comme des types de la même interface.

interface Vehicle {
    public function start();
    public function stop();
    public function drive();
}
Copier après la connexion

Classe abstraite

Une classe abstraite est une classe qui contient au moins une méthode non implémentée. Les méthodes abstraites ne peuvent être implémentées que dans des sous-classes de classes abstraites, fournissant des comportements spécifiques pour différentes sous-classes.

abstract class Animal {
    abstract public function makeSound();
}
Copier après la connexion

Exemple pratique : Zoo

Prenons l'exemple d'un zoo où les animaux ont des comportements différents. Nous pouvons utiliser des interfaces et des classes abstraites pour définir le comportement public et l'implémentation spécifique des animaux.

Interface

interface AnimalActions {
    public function talk();
    public function walk();
    public function eat();
}
Copier après la connexion

Classe abstraite

abstract class Animal {
    protected $name;

    public function __construct($name) {
        $this->name = $name;
    }

    abstract public function makeSound();
}
Copier après la connexion

Classe concrète

class Dog extends Animal implements AnimalActions {
    public function __construct($name) {
        parent::__construct($name);
    }

    public function talk() {
        echo "{$this->name} barks.\n";
    }

    public function walk() {
        echo "{$this->name} walks.\n";
    }

    public function eat() {
        echo "{$this->name} eats dog food.\n";
    }

    public function makeSound() {
        echo "Woof!\n";
    }
}

class Cat extends Animal implements AnimalActions {
    public function __construct($name) {
        parent::__construct($name);
    }

    public function talk() {
        echo "{$this->name} meows.\n";
    }

    public function walk() {
        echo "{$this->name} slinks.\n";
    }

    public function eat() {
        echo "{$this->name} eats cat food.\n";
    }

    public function makeSound() {
        echo "Meow!\n";
    }
}
Copier après la connexion

En utilisant

, nous pouvons créer une classe de zoo pour gérer les animaux :

class Zoo {
    private $animals = [];

    public function addAnimal(AnimalActions $animal) {
        $this->animals[] = $animal;
    }

    public function letAnimalsTalk() {
        foreach ($this->animals as $animal) {
            $animal->talk();
        }
    }
}
Copier après la connexion

le script principal nous pouvons créer un zoo, ajoutez des animaux et faites-les parler :

$zoo = new Zoo();
$zoo->addAnimal(new Dog('Buddy'));
$zoo->addAnimal(new Cat('Fluffy'));
$zoo->letAnimalsTalk();
Copier après la connexion

Cela affichera :

Buddy barks.
Fluffy meows.
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!