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

什么是多态?
多态性,其来自于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
多态
举例说明多态的作用、java多态举例、多态举例、举例说明多态、多态性举例,以便于您获取更多的相关知识。

时间: 2024-10-25 23:24:48

举例讲解PHP面对对象编程的多态_php技巧的相关文章

人事-用java面对对象编程一个认识管理系统系统

问题描述 用java面对对象编程一个认识管理系统系统 请是用java面对对象编程 做一个较为简单的人事管理系统~~比较全面的. 让我这个小白观摩一下学习学习 解决方案 http://blog.csdn.net/qq_25827845/article/details/50932501

对Java的面对对象编程中对象和引用以及内部类的理解_java

最近利用下班的时候看了看的think in java感觉再看 和第一次看大不一样 接下来说一下java中对象和引用的关系,以及内部类的概念.1.java中一切都是对象 在java中是什么来操作者对象呢?答案是引用,这就好比C或者C++中的指针. 如果用拥有一个引用,那么此时你必须让其和一个对象关联在一起,否则这个引用并不会像你想象的那样任由你的控制,例如你创建了一个String的引用: String s ; 而此时并未与任何对象关联,如果此时你去做一些操作,如调用String的一些方法,肯定是会

实例讲解PHP面向对象之多态_php技巧

什么是多态性? 多态性是继数据库抽象和继承后,面向对象语言的第三个特征.多态即多种形态,具有表现多种形态的能力特征.在面向对象中表示根据对象的类型以不同方式处理.多态性允许每个对象以适合自身的方式去响应共同的消息.多态性增强了软件的灵活性和重用性. 如我们创建一个doing()方法,如果是学生则打印上课,如是公司职员则打印上班. 普通做法 使用if判断 复制代码 代码如下: /**  * PHP多态性  * 琼台博客  */   // 定义学生类 class student{     publi

实例简介PHP的一些高级面向对象编程的特性_php技巧

一般来说,学习PHP需要了解下面的一些特性: 对象克隆.PHP5中对OOP模型的主要改进之一,是将所有对象都看作引用,而不是值.但是,如果所有对象都视为引用,那么如何创建对象的副本呢?答案是通过克隆对象. <?php class Corporate_Drone{ private $employeeid; private $tiecolor; function setEmployeeID($employeeid) { $this->employeeid = $employeeid; } func

用PHP与XML联手进行网站编程代码实例_php技巧

一.小序  HTML简单易学又通用,一般的PHP程序就是嵌入在HTML语言之中实现的.但是随着WEB越来越广泛的应用,HTML的弱点也越来越明显了.XML的出现,弥补了这些不足,它提供了一个能够处理互联网上全部数据的通用方法. 二.HTML的局限性分析 1. HTML的可扩展性差.虽然作为一般的应用,HTML应经够用了,但是在处理数学和化学等符号时,HTML有明显的缺点,而且它无法进行扩展,这样使它的发展收到了极大的限制. 2. 链路丢失后不能自动纠正.由于Web页面的URL地址经常改变,而在改

PHP面向对象编程快速入门_php技巧

[摘 要]面向对象编程(OOP)是我们编程的一项基本技能,PHP4对OOP提供了良 好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高PHP编程能力和 规划好Web开发构架都是非常有意义的. 面向对象编程(OOP)是我们编程的一项基本技能,PHP4对 OOP提供了良好的支持.如何使用OOP的思想来进行PHP的高级编程,对于提高PHP 编程 能力和规划好Web开发构架都是非常有意义的.下面我们就通过实例来说明 使用PHP的OOP进行编程的实际意义和应用方法. 我们通常在做一个有数据库后

PHP SOCKET编程详解_php技巧

1. 预备知识 一直以来很少看到有多少人使用php的socket模块来做一些事情,大概大家都把它定位在脚本语言的范畴内吧,但是其实php的socket模块可以做很多事情,包括做ftplist,http post提交,smtp提交,组包并进行特殊报文的交互(如smpp协议),whois查询.这些都是比较常见的查询. 特别是php的socket扩展库可以做的事情简直不会比c差多少. php的socket连接函数 1.集成于内核的socket 这个系列的函数仅仅只能做主动连接无法实现端口监听相关的功能

详解PHP的Laravel框架中Eloquent对象关系映射使用_php技巧

零.什么是 EloquentEloquent 是 Laravel 的 'ORM',即 'Object Relational Mapping',对象关系映射.ORM 的出现是为了帮我们把对数据库的操作变得更加地方便. Eloquent 让一个 'Model类' 对应一张数据库表,并且在底层封装了很多 'function',可以让 Model 类非常方便地调用. 来看一段如下代码: <?php class Article extends \Eloquent { protected $fillable

PHP序列化/对象注入漏洞分析_php技巧

本文是关于PHP序列化/对象注入漏洞分析的短篇,里面讲述了如何获取主机的远程shell. 如果你想自行测试这个漏洞,你可以通过 XVWA 和 Kevgir 进行操作. 漏洞利用的第一步,我们开始测试目标应用是否存在PHP序列化.为了辅助测试,我们使用了Burpsuite的SuperSerial插件,下载地址在 这里 .它会被动检测PHP和Java序列化的存在. 分析 我们检测到了应用里使用了PHP序列化,所以我们可以开始确认应用代码里是否含有远程代码执行漏洞.需要注意的是,序列化对象是从参数"r