PHP多态代码实例


Posted in PHP onJune 26, 2015

多态定义:只关心一个接口或者基类,而不关心一个对象的具体类。(同一类型,不同结果)

这里两个例子:

第一个,我们发现,基类定义了标准,子类进行了自我规则的实现。这是多态的一个要求。同时,这是满足重写;实际上这是不同类的不同表现;没有严格满足一个接口,或者基类编程。因为你调用的时候不是 stu->showGrade() 而是各自自己的方法;

class stu{

  public function showGrade(){
    echo "base class";  
  }

}


class xiaomin extends stu{

  public function showGrade(){
    echo "is son show 80";  
  } 
}

class xiaoli extends stu{

  public function showGrade(){
    echo "is son show 60";  
  } 
}

function doit($obj){

  if(get_class($obj) != "stu"){
    $obj->showGrade();
  }

}

doit(new xiaoli());
doit(new xiaomin());

第二个例子:dovoice 参数规定了$obj 为animal,意识就是用接口 接受了 实现类对象。了向上转型。这就符合同一类型,不同结果了,这就是多态;

实际上在Java中 会是 animal a = new dog();这样子的;因为PHP 是若类型语言。没有对象转型机制。

interface animal{
  public function voice();
}

class cat implements animal{
  public function voice(){
    echo "miao~~~<br>";
  }
}

class dog implements animal{
  public function voice(){
    echo "wang ~~~<br>";
  }
}

function dovoice(animal $obj){
  $obj->voice();
}


dovoice(new dog());
dovoice(new cat());
PHP 相关文章推荐
PHP利用COM对象访问SQLServer、Access
Oct 09 PHP
无限级别菜单的实现
Oct 09 PHP
15种PHP Encoder的比较
Mar 06 PHP
PHP 分页类(模仿google)-面试题目解答
Sep 13 PHP
php图片缩放实现方法
Feb 20 PHP
PHP设计模式之装饰者模式代码实例
May 11 PHP
php函数连续调用实例分析
Jul 30 PHP
PHP创建单例后台进程的方法示例
May 23 PHP
360搜索引擎自动收录php改写方案
Apr 28 PHP
PHP常用字符串函数小结(推荐)
Aug 05 PHP
php使用event扩展的io复用测试的示例
Oct 20 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 PHP
PHP微信开发之二维码生成类
Jun 26 #PHP
Thinkphp关闭缓存的方法
Jun 26 #PHP
php获取、检查类名、函数名、方法名的函数方法
Jun 25 #PHP
php header函数的常用http头设置
Jun 25 #PHP
PHP里的单例类写法实例
Jun 25 #PHP
PHP合并数组+号和array_merge的区别
Jun 25 #PHP
PHP数组与对象之间使用递归实现转换的方法
Jun 24 #PHP
You might like
PHP分页函数代码(简单实用型)
2010/12/02 PHP
yii框架通过控制台命令创建定时任务示例
2014/04/30 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
详解PHP中的状态模式编程
2015/08/11 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
php取出数组单个值的方法
2018/03/12 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
Extjs学习过程中新手容易碰到的低级错误积累
2010/02/11 Javascript
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
2016/01/01 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
JS实现类似百叶窗下拉菜单效果
2016/12/30 Javascript
Node.js学习入门
2017/01/03 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python中Genarator函数用法分析
2015/04/08 Python
使用Python对SQLite数据库操作
2017/04/06 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
python实现同一局域网下传输图片
2020/03/20 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
物业管理公司实习生自我鉴定
2013/09/19 职场文书
应届生人事助理求职信
2013/11/09 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
电影雨中的树观后感
2015/06/15 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
创业计划书之酒店
2019/08/30 职场文书
详解Redis基本命令与使用场景
2021/06/01 Redis