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 相关文章推荐
模仿OSO的论坛(三)
Oct 09 PHP
php 获取当前访问的url文件名的方法小结
Feb 08 PHP
php变量作用域的深入解析
Jun 03 PHP
PHP中feof()函数实例测试
Aug 23 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
浅析iis7.5安装配置php环境
May 10 PHP
php常用图片处理类
Mar 16 PHP
php求今天、昨天、明天时间戳的简单实现方法
Jul 28 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
centos7上编译安装php7以php-fpm方式连接apache
Nov 08 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
Mar 30 PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 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/07/08 PHP
php画图实例
2014/11/05 PHP
php银联网页支付实现方法
2015/03/04 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
Avalonjs双向数据绑定与监听的实例代码
2017/06/23 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
python从入门到精通(DAY 2)
2015/12/20 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
详解Django CAS 解决方案
2019/10/30 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
在keras里实现自定义上采样层
2020/06/28 Python
Keras实现DenseNet结构操作
2020/07/06 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
2021/02/20 Python
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
实验教师岗位职责
2014/02/13 职场文书
女生节标语
2014/06/26 职场文书
公务员政审个人总结
2015/02/12 职场文书
python flask框架快速入门
2021/05/14 Python
公历12个月名称的由来
2022/04/12 杂记