Home > Backend Development > PHP Tutorial > PHP object-oriented programming advanced: understanding polymorphism and inheritance

PHP object-oriented programming advanced: understanding polymorphism and inheritance

王林
Release: 2024-05-08 18:06:01
Original
612 people have browsed it

In object-oriented programming, polymorphism allows objects to respond to the same method calls in different ways, while inheritance allows subclasses to inherit and extend parent class functions. Polymorphism is manifested in the differential response of different types of objects to the same method, such as the speak() method of animal, dog, and cat objects. Inheritance is reflected in the subclass inheriting data and methods from the parent class. For example, the employee class inherits the name and age from the human class, and adds a new salary attribute. In the actual case, the kiwi class inherits the fruit name of the fruit class, while the sports car class rewrites the getType() method in the parent class through polymorphism, realizing different responses to the same method in the car class, returning "car" and "car" respectively. Type information for "sports car".

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

Advanced PHP Object-Oriented Programming: Understanding Polymorphism and Inheritance

Overview

Polymorphism and inheritance are two basic concepts of object-oriented programming (OOP). Polymorphism allows objects to respond to the same method call in different ways, while inheritance allows the creation of new classes that inherit and extend the functionality of existing classes.

Polymorphism

Polymorphism allows an object to perform different operations depending on its 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
Copy after login

Inheritance

Inheritance allows the creation of new classes (subclasses) that inherit data and methods from existing classes (parent classes).

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";
Copy after login

Practical case

Fruit class and kiwi class (inheritance)

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";
Copy after login

Car class and sports car class (polymorphic)

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";
Copy after login

The above is the detailed content of PHP object-oriented programming advanced: understanding polymorphism and inheritance. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template