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 相关文章推荐
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
Jun 30 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
Jul 31 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
PHP几个实用自定义函数小结
Jan 25 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
Mar 07 PHP
php截取视频指定帧为图片
May 16 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
PHP调用Mailgun发送邮件的方法
May 04 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
Aug 23 PHP
PHP的cookie与session原理及用法详解
Sep 27 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
真正面向对象编程:PHP5.01发布
2006/10/09 PHP
php实现的简单压缩英文字符串的代码
2008/04/24 PHP
PHP 分页原理分析,大家可以看看
2009/12/21 PHP
php gzip压缩输出的实现方法
2013/04/27 PHP
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
深入浅析python定时杀进程
2016/06/06 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
Python制作动态字符图的实例
2019/01/27 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
Python colormap库的安装和使用详情
2020/10/06 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
大学生简历的个人自我评价
2013/12/04 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
2014年外联部工作总结
2014/11/17 职场文书
出国导师推荐信
2015/03/25 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
了解Redis常见应用场景
2021/06/23 Redis
HTML常用标签超详细整理
2022/03/19 HTML / CSS
德劲DE1105机评
2022/04/05 无线电