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 相关文章推荐
配置支持SSI
Nov 25 PHP
一步一步学习PHP(4) php 函数 补充2
Feb 15 PHP
php iconv() : Detected an illegal character in input string
Dec 05 PHP
PHP中如何定义和使用常量
Feb 28 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
May 05 PHP
php实现html标签闭合检测与修复方法
Jul 09 PHP
详细解读PHP中接口的应用
Aug 12 PHP
php排序算法实例分析
Oct 17 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
PHP实现负载均衡下的session共用功能
Apr 17 PHP
PHP strripos函数用法总结
Feb 11 PHP
PHP根据key删除数组中指定的元素
Feb 28 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/10/09 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
js 解决“options为空或不是对象”
2008/12/22 Javascript
javascript jQuery插件练习
2008/12/24 Javascript
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
python tkinter基本属性详解
2019/09/16 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
浅谈Python __init__.py的作用
2020/10/28 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
python绘图模块之利用turtle画图
2021/02/12 Python
浅析HTML5中的 History 模式
2017/06/22 HTML / CSS
Delphi工程师笔试题
2013/09/21 面试题
中英文自我评价常用句型
2013/12/19 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
钱学森电影观后感
2015/06/04 职场文书
关于环保的宣传稿
2015/07/23 职场文书
高中生军训感言
2015/08/01 职场文书
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers
Python中npy和mat文件的保存与读取
2022/04/24 Python