举例讲解PHP面对对象编程的多态

 更新时间:2015年08月12日 08:57:00   作者:zinss26914  
这篇文章主要介绍了举例讲解PHP面对对象编程的多态,是PHP入门学习中的基础知识,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

什么是多态?
多态性,其来自于dictionary.com的定义是"以不同形式,阶段或者类型出现在独立的组织中或者同种组织中,而不存在根本区别。"由该定义,我们可以认为,多态性是一种通过多种状态或阶段来描述相同对象的编程方式。其实,它的真正意义在于:实际开发中,我们只需要关注一个接口或基类的编程,而不必担心一个对象所属于的具体类(class)。
如果你熟悉设计模式,即使只是有个初步了解,那么你也会了解这个概念。事实上,PHP5多态性可能是基于模式设计编程中的最伟大的工具。它允许我们以一种逻辑的方式来组织相类似的对象从而实现在具体编码时不必担心对象的具体类型;而且,我们只需要对一个所期望的接口或基类编程即可。一个应用程序越抽象,则它就显得越灵活--而多态性是对行为加以抽象的最好的方式之一。
例如,让我们考虑一个叫Person的类。我们可以用称为David,Charles和Alejandro的类来子类化Person。Person有一个抽象方法AcceptFeedback(),所有的子类都要实现这个方法。这意味着,任何使用基类Person的子类的代码都能调用方法AcceptFeedback()。你不必检查该对象是一个David还是一个Alejandro,仅知道它是一个Person就够了。结果是,你的代码只需关注"最小公分母"-Person类即可。
在这个示例中的Person类也可以被创建为一个接口。当然,与上面相比存在一些区别,主要在于:一个接口并没有给出任何行为,而仅确定了一组规则。一个Person接口要求的是"你必须支持AddFeedback()方法",而一个Person类可以提供一些AddFeedback()方法的缺省代码-你对之的理解可以是"如果你不选择支持AddFeedback(),那么你应该提供一种缺省实现。"至于如何选择接口或基类则并非本文的主题;但是,一般说来,你需要通过基类来实现一个缺省的方法。如果你能够简单地勾勒出你的类所要实现的一组期望的功能,那么你也可以使用一个接口。

通俗理解
多态最直接的定义就是让具有继承关系的不同类对象,可以对相同名称的成员函数调用,产生不同的反应结果

多态的代码

   

<?php 
   
  /** 
   * 声明接口Demo 
   * @author wzy 
   * 
   */ 
  interface Demo 
  { 
   
    const NAME = "wangzhengyi"; 
   
    const AGE = 25; 
   
    function fun1 (); // 声明方法默认是public abstract 
    function fun2 (); 
  } 
   
  class One implements Demo 
  { 
   
    public function fun1 () 
    { 
      echo Demo::NAME . "就读于中国传媒大学"; 
    } 
   
    public function fun2 () 
    { 
      echo Demo::NAME . "的年龄是" . Demo::AGE; 
    } 
  } 
   
  class Two implements Demo 
  { 
   
    public function fun1 () 
    { 
      echo Demo::NAME . "在北京灵创众和科技有限公司实习中"; 
    } 
   
    public function fun2 () 
    { 
      echo Demo::NAME . "去年的年龄是24"; 
    } 
  } 
   
  // 同一个接口,实现同一个方法,不同的对象,反应结果不同。这就是多态的表现和应用 
   
  $one = new One(); 
  $one->fun1(); // wangzhengyi就读于中国传媒大学 
  $one->fun2(); // wangzhengyi的年龄是25 
   
  echo "<br>"; 
   
  $two = new Two(); 
  $two->fun1(); // wangzhengyi在北京灵创众和科技有限公司实习中 
  $two->fun2(); // wangzhengyi去年的年龄是24 

相关文章

  • PHP exif扩展方法开启详解

    PHP exif扩展方法开启详解

    本节主要介绍了如何开启PHP exif扩展方法,主要在于对php.ini文件的修改
    2014-07-07
  • Zend Studio 实用快捷键一览表(精心整理)

    Zend Studio 实用快捷键一览表(精心整理)

    以下是小编精心整理的Zend Studio实用快捷键。很有用哦!需要的朋友可以过来参考下
    2013-08-08
  • php mssql 日期出现中文字符的解决方法

    php mssql 日期出现中文字符的解决方法

    最近用php和mssql开发东西发现,用php读取的mssql日期字段会将日期自动转换成中文方式。
    2009-03-03
  • php中请求url的五种方法总结

    php中请求url的五种方法总结

    最近开发中遇到一个问题,程序第4行会请求一个url,通过查找相关的资料发现有多种方法,本文给大家介绍了关于php中请求url的五种方法,分别是用fopen()函数、file()函数、file_get_contents()函数、curl() 请求远程url数据和exec() 执行命令行命令,下面来一起看看吧。
    2017-07-07
  • php 过滤器实现代码

    php 过滤器实现代码

    在以前,PHP需要验证数据,一般都是程序员自己通过正则表达式实现,而从PHP从5.2开始把原本的PCEL中的filter函数移到了内置库中,并做了不少强化,可以用这些函数实现对数据的过滤和验证。
    2010-08-08
  • 有关于PHP中常见数据类型的汇总分享

    有关于PHP中常见数据类型的汇总分享

    本文整理了有关于PHP中常见的数据类型,感兴趣的朋友可以参考下
    2014-01-01
  • PHP中for循环语句的几种变型

    PHP中for循环语句的几种变型

    PHP中for循环语句的几种变型...
    2007-03-03
  • Linux下编译redis和phpredis的方法

    Linux下编译redis和phpredis的方法

    这篇文章主要介绍了Linux下编译redis和phpredis的方法,分析了redis的下载,编译,安装及遇到的问题与相应的解决方法,需要的朋友可以参考下
    2016-04-04
  • 浅谈如何提高PHP代码的质量

    浅谈如何提高PHP代码的质量

    说实话,在代码质量方面,PHP 的压力非常大。通过阅读本系列文章,您将了解如何提高 PHP 代码的质量。
    2021-05-05
  • PHP实现数据四舍五入的方法小结【4种方法】

    PHP实现数据四舍五入的方法小结【4种方法】

    这篇文章主要介绍了PHP实现数据四舍五入的方法,结合实例形式总结分析了php使用number_format()、round()、sprintf()格式化及intval()等函数实现数据四舍五入的4种操作方法,需要的朋友可以参考下
    2019-03-03

最新评论

?


http://www.vxiaotou.com