当前位置:首页 > PHP

php 实现多态

2026-02-27 15:25:01PHP

多态的概念

多态是面向对象编程的三大特性之一(封装、继承、多态),指同一个方法在不同类中有不同的实现方式。PHP 通过继承和接口实现多态。

通过继承实现多态

子类可以重写父类的方法,调用时根据对象类型执行对应的方法。

class Animal {
    public function makeSound() {
        echo "Animal sound";
    }
}

class Dog extends Animal {
    public function makeSound() {
        echo "Bark";
    }
}

class Cat extends Animal {
    public function makeSound() {
        echo "Meow";
    }
}

$animals = [new Dog(), new Cat()];
foreach ($animals as $animal) {
    $animal->makeSound(); // 输出 Bark 和 Meow
}

通过接口实现多态

接口定义方法规范,不同类实现接口并提供具体逻辑。

interface Shape {
    public function calculateArea();
}

class Circle implements Shape {
    private $radius;

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

    public function calculateArea() {
        return 3.14 * $this->radius * $this->radius;
    }
}

class Square implements Shape {
    private $side;

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

    public function calculateArea() {
        return $this->side * $this->side;
    }
}

$shapes = [new Circle(5), new Square(4)];
foreach ($shapes as $shape) {
    echo $shape->calculateArea(); // 输出圆的面积和正方形的面积
}

抽象类实现多态

抽象类结合了接口和继承的特性,可以定义抽象方法和具体方法。

php 实现多态

abstract class Vehicle {
    abstract public function drive();

    public function startEngine() {
        echo "Engine started";
    }
}

class Car extends Vehicle {
    public function drive() {
        echo "Driving a car";
    }
}

class Bike extends Vehicle {
    public function drive() {
        echo "Riding a bike";
    }
}

$vehicles = [new Car(), new Bike()];
foreach ($vehicles as $vehicle) {
    $vehicle->drive(); // 输出 Driving a car 和 Riding a bike
}

多态的应用场景

  • 插件系统:通过接口统一扩展功能。
  • 支付网关:不同支付方式实现同一接口。
  • 数据存储:支持多种数据库驱动。

多态的核心是通过统一的调用方式实现不同的行为,提高代码的灵活性和可扩展性。

标签: 多态php
分享给朋友:

相关文章

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素…

php实现伪静态

php实现伪静态

PHP 实现伪静态的方法 伪静态(URL Rewrite)是一种将动态URL转换为看似静态URL的技术,提升SEO友好性和用户体验。以下是几种常见的实现方式: 使用 Apache 的 mod_rew…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…

php 实现链表

php 实现链表

PHP 实现链表的方法 链表是一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。PHP 中可以通过类和对象来实现链表。 定义链表节点类 创建一个 ListNode 类,用于表示链…

php实现注册登陆

php实现注册登陆

PHP 注册功能实现 创建数据库表结构(MySQL示例): CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…

php 实现锁

php 实现锁

PHP 实现锁的常见方法 文件锁(flock) 利用 flock 函数对文件进行独占锁定,适用于单机环境。 $fp = fopen("lockfile.lock", "w+"); if (f…