Maison  >  Article  >  développement back-end  >  Héritage, polymorphisme et interfaces : trois fonctionnalités majeures orientées objet de PHP

Héritage, polymorphisme et interfaces : trois fonctionnalités majeures orientées objet de PHP

WBOY
WBOYoriginal
2023-05-11 15:45:061396parcourir

PHP est un langage de programmation côté serveur qui prend en charge la programmation orientée objet (POO) depuis PHP5. L'idée principale de la POO est d'encapsuler les données et le comportement dans des objets pour améliorer la maintenabilité et l'évolutivité du programme. En PHP, la programmation orientée objet présente trois caractéristiques majeures : l'héritage, le polymorphisme et les interfaces.

1. Héritage

L'héritage signifie qu'une classe peut hériter des propriétés et des méthodes d'une autre classe. La classe héritée est appelée classe parent ou classe de base, et la classe héritée est appelée sous-classe ou classe dérivée. Les sous-classes peuvent hériter des propriétés et des méthodes de la classe parent et peuvent les remplacer ou les étendre.

Par exemple, nous pouvons définir une classe animale Animal, qui a les attributs $name et $color, et les méthodes eat() et sleep(). Ensuite, nous pouvons définir une classe dog Dog, qui hérite de la classe Animal et ajoute une méthode bark() :

class Animal {
    protected $name;
    protected $color;
    
    public function eat() {
        echo "$this->name is eating.
";
    }
    
    public function sleep() {
        echo "$this->name is sleeping.
";
    }
}

class Dog extends Animal {
    public function bark() {
        echo "$this->name is barking.
";
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";
$dog->eat(); // 输出: Fido is eating.
$dog->sleep(); // 输出: Fido is sleeping.
$dog->bark(); // 输出: Fido is barking.

Notez que dans la classe parent, nous utilisons le mot-clé protected pour définir les attributs $name et $color. Cela signifie qu'ils ne sont accessibles qu'au sein des classes parent et enfant et non directement en dehors de la classe. Dans la sous-classe, nous avons utilisé le mot-clé public pour définir la méthode bark(), ce qui signifie qu'elle est accessible à la fois à l'intérieur et à l'extérieur de la classe.

2. Polymorphisme

Le polymorphisme signifie qu'un objet peut apparaître sous plusieurs formes. En programmation orientée objet, le polymorphisme signifie qu'une sous-classe peut remplacer une classe parent sans affecter l'exactitude du programme.

Par exemple, nous pouvons définir une classe zoo Zoo, qui possède une méthode show ($ animal) pour afficher les informations sur les animaux. Nous pouvons maintenant passer différents objets animaux à la méthode show() pour obtenir le polymorphisme :

class Zoo {
    public function show($animal) {
        $animal->eat();
        $animal->sleep();
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";

$cat = new Cat();
$cat->name = "Fluffy";
$cat->color = "white";

$zoo = new Zoo();
$zoo->show($dog); // 输出: Fido is eating. Fido is sleeping.
$zoo->show($cat); // 输出: Fluffy is eating. Fluffy is sleeping.

Dans cet exemple, nous avons ajouté une nouvelle classe cat Cat, qui hérite de la classe Animal et remplace la méthode eat(). Nous pouvons transmettre des objets chien et chat à la méthode show(), et comme ils sont tous deux des sous-classes de la classe Animal, ils peuvent réaliser le polymorphisme.

3. Interface

Une interface est une spécification qui définit un ensemble de méthodes mais n'a pas d'implémentation spécifique. En PHP, une classe peut implémenter une ou plusieurs interfaces pour répondre à des exigences fonctionnelles spécifiques.

Par exemple, nous pouvons définir une interface Speakable, qui possède une méthode speak() pour émettre des sons d'animaux. Ensuite, nous pouvons demander aux classes dog et cat d'implémenter cette interface :

interface Speakable {
    public function speak();
}

class Dog extends Animal implements Speakable {
    public function bark() {
        echo "$this->name is barking.
";
    }
    
    public function speak() {
        $this->bark();
    }
}

class Cat extends Animal implements Speakable {
    public function meow() {
        echo "$this->name is meowing.
";
    }
    
    public function speak() {
        $this->meow();
    }
}

$dog = new Dog();
$dog->name = "Fido";
$dog->color = "brown";
$dog->speak(); // 输出: Fido is barking.

$cat = new Cat();
$cat->name = "Fluffy";
$cat->color = "white";
$cat->speak(); // 输出: Fluffy is meowing.

Dans cet exemple, nous définissons une interface Speakable, qui a une méthode speak(). Ensuite, nous laissons les classes Dog et Cat implémenter cette interface et implémenter respectivement la méthode speak(). De cette façon, nous pouvons appeler la méthode speak() sur les objets chien et chat sans connaître leur implémentation spécifique.

Héritage, polymorphisme et interfaces sont les trois fonctionnalités majeures de la programmation orientée objet PHP. Ils nous permettent de mieux organiser et gérer le code et d’améliorer la réutilisabilité et l’évolutivité du code. Comprendre ces fonctionnalités peut nous permettre de mieux comprendre le modèle de programmation orienté objet de PHP.

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!

Déclaration:
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