Héritage et polymorphisme PHP : l'art de la programmation orientée objet

WBOY
Libérer: 2024-02-29 13:54:01
avant
814 Les gens l'ont consulté

L'héritage PHP et le polymorphisme sont des concepts cruciaux dans la programmation orientée objet. Ils nous fournissent des outils puissants pour nous aider à mieux organiser et gérer le code. Cet article est écrit par l'éditeur PHP Zimo. Il explorera en profondeur les principes, l'utilisation et les applications pratiques de l'héritage et du polymorphisme en PHP, aidant les lecteurs à mieux comprendre et appliquer l'art de la programmation orientée objet.

class Animal {
public $name;
public function eat() {
echo "Animal is eating.";
}
}

class Dog extends Animal {
public function bark() {
echo "Dog is barking.";
}
}

$dog = new Dog();
$dog->eat(); // Output: Animal is eating.
$dog->bark(); // Output: Dog is barking.
Copier après la connexion

Dans l'exemple ci-dessus, la classe Dog hérite de la classe Animal, donc l'objet Dog possède toutes les propriétés et méthodes de la classe Animal, et peut également utiliser ses propres méthodes, telles que la méthode bark().

phpLe polymorphisme est la capacité de permettre à différents objets de répondre au même message de différentes manières. Dans la Programmation orientée objet, le polymorphisme est obtenu grâce à l'héritage et au remplacement de méthode.

class Animal {
public function eat() {
echo "Animal is eating.";
}
}

class Dog extends Animal {
public function eat() {
echo "Dog is eating.";
}
}

class Cat extends Animal {
public function eat() {
echo "Cat is eating.";
}
}

$animals = array(new Animal(), new Dog(), new Cat());

foreach ($animals as $animal) {
$animal->eat(); // Output: Animal is eating. Dog is eating. Cat is eating.
}
Copier après la connexion

Dans l'exemple ci-dessus, la classe Animal définit une méthode eat() et les classes Dog et Cat remplacent cette méthode, donc lorsque $animal->eat() est appelée, la méthode réellement exécutée dépend du type $animal.

Les classes abstraites et les interfaces sont deux mécanismes importants pour réaliser le polymorphisme en PHP. Une classe abstraite est une classe qui ne peut pas être instanciée, elle ne peut qu'être héritée. Les méthodes abstraites peuvent être définies dans des classes abstraites. Les méthodes abstraites n'ont pas d'implémentation concrète et doivent être implémentées par des sous-classes.

abstract class Animal {
public $name;
public abstract function eat();
}

class Dog extends Animal {
public function eat() {
echo "Dog is eating.";
}
}

class Cat extends Animal {
public function eat() {
echo "Cat is eating.";
}
}

$dog = new Dog();
$dog->eat(); // Output: Dog is eating.

$cat = new Cat();
$cat->eat(); // Output: Cat is eating.
Copier après la connexion

Dans l'exemple ci-dessus, la classe Animal est une classe abstraite et elle définit une méthode abstraite eat(). Les classes Dog et Cat héritent de la classe Animal et implémentent la méthode eat().

Une interface est une classe qui contient uniquement des déclarations de méthode et ne contient aucune implémentation. Les méthodes d'une interface doivent être implémentées par la classe qui implémente l'interface.

interface Animal {
public function eat();
}

class Dog implements Animal {
public function eat() {
echo "Dog is eating.";
}
}

class Cat implements Animal {
public function eat() {
echo "Cat is eating.";
}
}

$dog = new Dog();
$dog->eat(); // Output: Dog is eating.

$cat = new Cat();
$cat->eat(); // Output: Cat is eating.
Copier après la connexion
Dans l'exemple ci-dessus, l'interface Animal définit une méthode eat(). Les classes Dog et Cat implémentent l'interface Animal et fournissent l'implémentation de la méthode eat().

L'héritage et le polymorphisme sont des éléments importants de la programmation orientée objet en PHP. Ils permettent aux

programmeurs de créer du code réutilisable et extensible et de rendre le code plus facile à comprendre et à maintenir.

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!

source:lsjlt.com
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