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入门的学习方法
Jan 02 PHP
PHP+MYSQL开发工具及资源收藏
Jan 02 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
那些年一起学习的PHP(三)
Mar 22 PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 PHP
php日历制作代码分享
Jan 20 PHP
php判断ip黑名单程序代码实例
Feb 24 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
SESSION存放在数据库用法实例
Aug 08 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
Apr 30 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 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 之入门篇
2006/12/04 PHP
PHP 网页过期时间的控制代码
2009/06/29 PHP
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
PHP GD库生成图像的几个函数总结
2014/11/19 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
javascript hasFocus使用实例
2010/06/29 Javascript
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
使用jquery实现select添加实现后台权限添加的效果
2011/05/28 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
实例讲解JQuery中this和$(this)区别
2014/12/08 Javascript
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
javascript jquery对form元素的常见操作详解
2016/06/12 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
springMVC结合AjaxForm上传文件
2016/07/12 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
2017/03/13 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
浅谈Vue项目骨架屏注入实践
2019/08/05 Javascript
NodeJS模块Buffer原理及使用方法解析
2020/11/11 NodeJs
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
初中三年学生的学习自我评价
2013/11/13 职场文书
入党思想汇报
2014/01/05 职场文书
班级聚会策划书
2014/01/16 职场文书
九年级体育教学反思
2014/01/23 职场文书
校园学雷锋广播稿
2014/10/08 职场文书