Maison >développement back-end >tutoriel php >Programmation orientée objet PHP avancée : comprendre le polymorphisme et l'héritage

Programmation orientée objet PHP avancée : comprendre le polymorphisme et l'héritage

王林
王林original
2024-05-08 18:06:01612parcourir

Dans la programmation orientée objet, le polymorphisme permet aux objets de répondre aux mêmes appels de méthode de différentes manières, tandis que l'héritage permet aux sous-classes d'hériter et d'étendre les fonctions de la classe parent. Le polymorphisme se manifeste dans la réponse différentielle de différents types d'objets à la même méthode, comme la méthode speak() des objets animal, chien et chat. L'héritage se reflète dans la sous-classe qui hérite des données et des méthodes de la classe parent. Par exemple, la classe des employés hérite du nom et de l'âge de la classe humaine et ajoute un nouvel attribut de salaire. Dans le cas réel, la classe kiwi hérite du nom de fruit de la classe fruit, tandis que la classe sports car réécrit la méthode getType() dans la classe parent par polymorphisme, réalisant des réponses différentes à la même méthode dans la classe car, renvoyant " car " et " voiture " respectivement. Tapez les informations pour " voiture de sport ".

PHP 对象导向编程进阶:理解多态和继承

Programmation orientée objet PHP avancée : Comprendre le polymorphisme et l'héritage

Vue d'ensemble

Le polymorphisme et l'héritage sont deux concepts de base de la programmation orientée objet (POO). Le polymorphisme permet aux objets de répondre au même appel de méthode de différentes manières, tandis que l'héritage permet la création de nouvelles classes qui héritent et étendent les fonctionnalités des classes existantes.

Polymorphisme

Le polymorphisme permet à un objet d'effectuer différentes opérations selon son type.

class Animal {
    public function speak() {
        echo "Animal speaks\n";
    }
}

class Dog extends Animal {
    public function speak() {
        echo "Dog barks\n";
    }
}

class Cat extends Animal {
    public function speak() {
        echo "Cat meows\n";
    }
}

$dog = new Dog();
$dog->speak();  // 输出:Dog barks

$cat = new Cat();
$cat->speak();  // 输出:Cat meows

Inheritance

L'héritage permet la création de nouvelles classes (sous-classes) qui héritent des données et des méthodes des classes existantes (classes parents).

class Person {
    protected $name;
    protected $age;

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

    public function getName() {
        return $this->name;
    }
}

class Employee extends Person {
    private $salary;

    public function __construct($name, $age, $salary) {
        parent::__construct($name, $age);  // 调用父类构造函数
        $this->salary = $salary;
    }

    public function getSalary() {
        return $this->salary;
    }
}

$employee = new Employee("John Doe", 30, 50000);
echo "Employee name: " . $employee->getName() . "\n";
echo "Employee salary: " . $employee->getSalary() . "\n";

Cas pratique

Classe fruits et classe kiwi (héritage)

class Fruit {
    protected $name;

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

    public function getName() {
        return $this->name;
    }
}

class Kiwi extends Fruit {
    public function __construct() {
        parent::__construct("Kiwi");
    }
}

$kiwi = new Kiwi();
echo "Fruit name: " . $kiwi->getName() . "\n";

Classe voiture et classe voiture de sport (polymorphisme)

class Car {
    protected $make;
    protected $model;

    public function __construct($make, $model) {
        $this->make = $make;
        $this->model = $model;
    }

    public function getType() {
        return "Car";
    }
}

class SportsCar extends Car {
    public function getType() {
        return "Sports Car";
    }
}

$car = new Car("Toyota", "Camry");
$sportsCar = new SportsCar("Ferrari", "F430");

echo "Car type: " . $car->getType() . "\n";
echo "Sports car type: " . $sportsCar->getType() . "\n";

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