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 相关文章推荐
用PHP4访问Oracle815
Oct 09 PHP
php smarty的预保留变量总结
Dec 04 PHP
php面向对象全攻略 (一) 面向对象基础知识
Sep 30 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
PHP 自定义错误处理函数的使用详解
May 10 PHP
对淘宝URL中ID提取的PHP代码
Sep 01 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
WordPress开发中短代码的实现及相关函数使用技巧
Jan 05 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
Oct 17 PHP
Laravel框架自定义分页样式操作示例
Jan 26 PHP
PHP 对象继承原理与简单用法示例
Apr 21 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
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
javascript URL锚点取值方法
2009/02/25 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
2016/01/08 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
fetch 如何实现请求数据
2018/12/20 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
Python中转换角度为弧度的radians()方法
2015/05/18 Python
python+opencv实现的简单人脸识别代码示例
2017/11/14 Python
python如何为创建大量实例节省内存
2018/03/20 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
python中pika模块问题的深入探究
2018/10/13 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
Python提取频域特征知识点浅析
2019/03/04 Python
python实现滑雪游戏
2020/02/22 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
光声世纪笔试题目
2012/08/25 面试题
奠基仪式主持词
2014/03/20 职场文书
六一节目主持词
2014/04/01 职场文书
五好关工委申报材料
2014/05/31 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书
试用期辞职信范文
2015/03/02 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS