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字符串截取问题
Nov 28 PHP
php 三维饼图的实现代码
Sep 28 PHP
php Smarty date_format [格式化时间日期]
Mar 15 PHP
由php的call_user_func传reference引发的思考
Jul 23 PHP
php curl常见错误:SSL错误、bool(false)
Dec 28 PHP
2个Codeigniter文件批量上传控制器写法例子
Jul 25 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
Nov 14 PHP
PHP魔术方法的使用示例
Jun 23 PHP
php结合md5实现的加密解密方法
Jan 25 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
Jun 13 PHP
php中简单的对称加密算法实现
Jan 05 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
Mar 05 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设计模式 Builder(建造者模式)
2011/06/26 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
JS中confirm,alert,prompt函数使用区别分析
2010/04/01 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
详谈nodejs异步编程
2014/12/04 NodeJs
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
浅谈React Native Flexbox布局(小结)
2018/01/08 Javascript
Layer弹出层动态获取数据的方法
2018/08/20 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
vue学习笔记之作用域插槽实例分析
2020/02/01 Javascript
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
python re正则表达式模块(Regular Expression)
2014/07/16 Python
Python 实现简单的电话本功能
2015/08/09 Python
Python实现单词翻译功能
2017/06/06 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
Python 保持登录状态进行接口测试的方法示例
2019/08/06 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
Linux如何为某个操作添加别名
2015/02/05 面试题
超市业务员岗位职责
2013/12/05 职场文书
英语简历自我评价
2014/01/26 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
奥巴马上海演讲稿
2014/09/10 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
2014年商场工作总结
2014/11/22 职场文书
运动会班级前导词
2015/07/20 职场文书