千家信息网

PHP5多态性与动态绑定的介绍

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"PHP5多态性与动态绑定的介绍",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"PHP5多态性与动态绑定的介绍"吧!什么是多态性?多态性是继
千家信息网最后更新 2026年11月02日PHP5多态性与动态绑定的介绍

本篇内容主要讲解"PHP5多态性与动态绑定的介绍",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"PHP5多态性与动态绑定的介绍"吧!

什么是多态性?

多态性是继数据抽象和继承后,面向对象语言的第三个特征。从字面上理解,多态的意思是"多种形态",简单来说,多态是具有表现多种形态的能力的特征,在OO中是指"语言具有根据对象的类型以不同方式处理之,特别是重载方法和继承类这种形式"的能力。多态被认为是面向对象语言的必备特性。

例如:

我们创建一个接口 Shape,定义一个空的方法 draw(),那么所有的实现类都必须实现这个方法,假设 Shape 有两个实现类:Triangle 和 Rectangle,我们虽然无法通过类似这样的 Java 代码来诠释 PHP 的多态性:

复制代码 代码如下:


Shape s = new Triangle();
s.draw();


不过 PHP5.1 中引入了 Type Hinting,可以限制函数(或者方法)的参数类型,我们使用这个特性来演示 PHP5 的多态性。

参考如下的代码:

复制代码 代码如下:


class TestPolymorphism {
public function drawNow(Shape $shape) {
$shape->draw();
}
}


函数 drawNow() 中限制传入的参数类型必须为 Shape 接口派生类的对象,这里我们传递给 drawNow() 的参数可能是 Triangle 或者 Rectangle 的对象,也可能是其它的 Shape 接口的派生类对象,比如 Circle 等等,简单的说 drawNow() 的参数类型是无法预知的,$shape->draw() 的行为最终由传入的参数的具体类型来决定,比如如果传入 Triangle 的对象,那么就调用 Triangle 的 draw() 方法,如果传入 Rectangle 的对象,就调用 Rectangle 的 draw() 方法。这种在运行时刻根据传递的对象参数的类型来决定调用哪一个对象的方法的行为就可以称之为多态。

Shape 也可以是一个抽象基类或者是非抽象的基类,上面的论述都是成立的。区别在于接口仅定义一套实现类必须遵守的规则,而使用基类则可以为派生类提供一些缺省的行为。

参考代码如下:

复制代码 代码如下:


/**
* Shape Interface
*
* @version 1.0
* @copyright
*/
interface Shape {
public function draw();
}

/**
* Triangle
*
* @uses Shape
* @version 1.0
* @copyright
*/
class Triangle implements Shape {
public function draw() {
print "Triangle::draw()\n";
}
}

/**
* Rectangle
*
* @uses Shape
* @version 1.0
* @copyright
*/
class Rectangle implements Shape {
public function draw() {
print "Rectangle::draw()\n";
}
}

/**
* Test Polymorphism
*
* @version 1.0
* @copyright
*/
class TestPoly {
public function drawNow(Shape $shape) {
$shape->draw();
}
}


$test = new TestPoly();
$test->drawNow(new Triangle());
$test->drawNow(new Rectangle());

/* vim: set expandtab tabstop=4 shiftwidth=4: */

什么是动态绑定?

HaoHappy 翻译的 PHP5 Object Pattern 第九节中有介绍:

除了限制访问,访问方式也决定哪个方法将被子类调用或哪个属性将被子类访问。 函数调用与函数本身的关联,以及成员访问与变量内存地址间的关系,称为绑定。

另有的说法:

绑定(binding):将方法的调用连到方法本身被称为绑定,当绑定发生在编译期,被称做静态绑定,而在程序运行的时候根据对象的类型来决定该绑定方法的成为动态绑定。

PHP 是一种动态语言,使用动态绑定。无须考虑采取何种绑定策略,因为一起都是自动的。

到此,相信大家对"PHP5多态性与动态绑定的介绍"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

方法 多态 对象 代码 动态 多态性 类型 参数 函数 接口 语言 行为 限制 内容 多种 子类 形态 方式 特征 特性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州大一互联网络科技有限公司 重生之互联网科技帝国 厦门中拓互联网络科技有限公司 中资互联网科技 互联网科技公司电话 丰台科技园 互联网 互联网金融监管科技 广西拼得多互联网科技有限公司 蓝色互联网科技 老年人脱离互联网科技的作文 互联网科技中介 顶级互联网科技成果有哪些 南山科技园互联网公司有哪些 米聚互联网科技南京有限公司排面 科技赋能视角下互联网保险发展 中和天地互联网科技有限公司 南通创西澳互联网科技有限公司 济南小医互联网科技有限公司招聘 六子台科技互联网展会 株洲百竞科技的互联网营销顾问 中关村互联网 科技集团 紫鲸互联网科技 互联网女皇 腾讯科技 互联网 新科技 互联网 科技服务平台 创业天下互联网科技有限公司 互联网5g黑科技有哪些 互联网科技研发水平 南京一网一红互联网科技有限公司 广西科技产业互联网是什么
0