php中的多态什么意思

php中的多态按字面上意思理解就是“多种形状”,可以理解为多种表现形式,即“一个对外接口,多个内部实现方法”;在面向对象的理论中,多态性是指同一个操作作用于不同的类的实例,将产生不同的执行结果。

php中的多态什么意思

本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

PHP 多态

 

多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息将可以产生不同的结果,这种现象称为多态性。

立即学习“PHP免费学习笔记(深入)”;

多态性允许每个对象以适合自身的方式去响应共同的消息。多态性增强了软件的灵活性和重用性。

在面向对象的软件开发中,多态性是最为重要的部分之一。面向对象编程并不只是将相关的方法与数据简单的结合起来,而是采用面向对象编程中的各种要素将现实生活中的各种情况清晰的描述出来。这一小节将对面向对象编程中的多态性作详细的讲解。

1.什么是多态

多 态(Polymorphism)按字面上意思理解就是“多种形状”。可以理解为多种表现形式,也即“一个对外接口,多个内部实现方法”。在面向对象的理论 中,多态性的一般定义为:同一个操作作用于不同的类的实例,将产生不同的执行结果。也即不同类的对象收到相同的消息时,将得到不同的结果。

在实际的应用开发中,采用面向对象中的多态主要在于可以将不同的子类对象都当作一个父类来处理,并且可以屏蔽不同子类对象之间所存在的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

推荐学习:《PHP视频教程》

2.  多态的应用设计

在实际的应用开发中,通常为了使项目能够在以后的时间里的轻松实现扩展与升级,需要通过继承实现可复用模块进行轻松升级。在进行可复用模块设计时,就需要尽可能的减少使用流程控制语句。此时就可以采用多态实现该类设计。

【示例】例举了通常采用流程控制语句实现不同类的处理。其代码如下所示。

class painter{ //定义油漆工类public function paintbrush(){ //定义油漆工动作echo "油漆工正在刷漆!";}}class typist{ //定义打字员类public function typed(){ //定义打字员工作echo "打字员正在打字!";}}function printworking($obj){ //定义处理类if(objinstanceofpainter)//若对象是油漆工类,则显示油漆工动作$obj−>paintbrush();elseif(obj instanceof typist){ //若对象是打字员类,则显示打字员动作$obj->typed();}else{ //若非以上类,则显示出错信息echo "Error: 对象错误!";}}printworking(new painter()); //显示员工工作printworking(new typist()); //显示员工工作

登录后复制

 

 

 

分析:在上述程序中,首先定义两个员工类:油漆工类和打字员类。然后定义一个处理函数,在该函数中,判断员工是否为已经定义的员工,打印出员工的工作状态。其结果如下所示。 

油漆工正在刷漆  打字员正在打字

登录后复制

从 以上程序可轻松看出,若想显示其几种员工的工作状态,需要首先定义该员工类,并在该员工类中定义员工的工作,然后在printworking()函数中增 加elseif语句以检查对象是哪一员工类的实例。这在实际的应用中,是非常不可取的。若此时采用多态,则可以轻松解决此问题。

可以首先创建一个员工父类,所有的员工类将继承自该员工父类,并且继承父类的所有方法与属性。然后在员工类中创建“是一”关系,判断是否为合法的员工。

【示例】例举了采用多态的方式改写上例。其代码如下所示。

 

 

class employee{//定义员工父类protected function working(){//定义员工工作,需要在子类的实现echo "本方法需要在子类中重载!";}}class painter extends employee{//定义油漆工类public function working(){//实现继承的工作方法echo "油漆工正在刷漆!";}}class typist extends employee{//定义打字员类public function working(){echo "打字员正在打字!";}}class manager extends employee{//定义经理类public function working(){echo "经理正在开会!";}}function printworking($obj){//定义处理方法if($obj instanceof employee){//若是员工对象,则显示其工作状态$obj->working();}else{//否则显示错误信息echo "Error: 对象错误!";}}printworking(new painter());//显示油漆工的工作printworking(new typist());//显示打字员的工作printworking(new manager());//显示经理的工作

登录后复制

 

 

 

分析:在上述程序中,首先定义一个员工基类,并定义一个员工工作状态的方法。然后定义将继承自员工基类的三个员工类:油漆工类、打字员类和经理类。然后定义显示员工工作状态的方法。并在该方法中创建一个“是一”关系,用于判断是否为合法的员工。其结果如下所示。

油漆工正在刷漆! 打字员正在打字! 经理正在开会!

登录后复制

从上例可发现,无论增加多少个员工类,只需要实现自员工父类继承的该员工类和方法。而无须修改显示员工工作状态的方法printworking()。

以上就是php中的多态什么意思的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2516319.html

(0)
上一篇 2025年3月5日 15:51:43
下一篇 2025年3月5日 13:11:29

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php占位符不能用怎么办

    php占位符不能用是因为代码错误,其解决办法:首先打开相应的代码文件;然后将“placeholder “Your name here””修改为“placeholder=”Your name here&#8…

    2025年3月5日
    200
  • PHP怎么实现局部替换

    PHP实现局部替换的方法:1、通过“substr_replace”函数实现局部替换;2、通过自制的星号替换函数“replaceStar($str, $start, $length=0)”实现局部替换。 本文操作环境:windows7系统、P…

    2025年3月5日 编程技术
    200
  • php中产生随机数的两种方式

    在php中为了之制造一些偶然性,我们可能需要将一些变量的值设置为随机的,为了解决这一问题,php中内置了函数rand()、mt_rand()函数来解决这一问题。 首先我们来看一看mt_rand()函数的语法: mt_rand    ( in…

    2025年3月5日
    200
  • php isset怎么检测变量是否设置

    php isset函数的作用就是检测变量是否设置,其语法是“bool isset( mixed var [, mixed var [, …]] )”,如果被检测的变量存在则返回TRUE,否则返回FALSE。 本文操作环境:win…

    2025年3月5日
    200
  • php执行exec权限不足怎么办

    php执行exec权限不足的解决办法:1、修改php脚本有读取及运行gcc文件路径的权限;2、运行此脚本的iis账户不能用默认的账号。 本文操作环境:windows7系统、PHP7.1版,DELL G3电脑 需要注意两方面的权限 一是php…

    2025年3月5日
    200
  • php怎么判断是不是素数

    php判断是不是素数的方法:首先创建一个PHP示例文件;然后通过自定义的“function check_ss($num) {…}”方法判断指定数字是不是素数即可。 本文操作环境:windows7系统、PHP7.1版,DELL G…

    2025年3月5日
    200
  • php数组怎么增加值

    php数组增加值的方法:首先创建一个PHP示例文件;然后通过“array(“red”,”green”);”创建一个数组;最后通过“array_push($a,”blue&#8221…

    2025年3月5日
    200
  • php 16进制颜色怎么转rgb

    php 16进制颜色转rgb的方法:首先创建一个PHP示例文件;然后通过“public static function hex2rgb($color){…}”方法将十六进制颜色转RGB颜色值即可。 本文操作环境:windows7…

    2025年3月5日
    100
  • php数组怎么删除头尾

    php数组删除头尾的方法:1、通过“array_shift”将数组开头的单元移出数组;2、通过“array_pop”将数组最后一个单元弹出即可。 本文操作环境:windows7系统、PHP7.1版,DELL G3电脑 删除开头的单元元素 a…

    2025年3月5日
    200
  • php数组怎么取前几个元素

    php数组取前几个元素的方法:首先新建一个php文件;然后创建一个数组;最后使用“array_splice”函数从“$arr”数组中取前三个元素即可。 本文操作环境:windows7系统、PHP7.1版,DELL G3电脑 新建一个php文…

    2025年3月5日 编程技术
    200

发表回复

登录后才能评论