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 ».
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(); }
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(); }
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(); }
Classe abstraite
abstract class Animal { protected $name; public function __construct($name) { $this->name = $name; } abstract public function makeSound(); }
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"; } }
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(); } } }
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();
Cela affichera :
Buddy barks. Fluffy meows.
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!