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公用函数列表[正则]
Feb 22 PHP
PHP新手用的Insert和Update语句构造类
Mar 31 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
解析php防止form重复提交的方法
Jul 01 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
php中引用符号(&amp;)的使用详解
Nov 13 PHP
php截取指定2个字符之间字符串的方法
Apr 15 PHP
php微信开发之上传临时素材
Jun 24 PHP
php常用数组函数实例小结
Dec 29 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 PHP
PHP使用PDO抽象层获取查询结果的方法示例
May 10 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 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 GUID生成函数和类
2014/03/10 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
php实现的click captcha点击验证码类实例
2014/09/23 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
使用JS 插件qrcode.js生成二维码功能
2017/02/20 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
微信jssdk逻辑在vue中的运用详解
2018/11/14 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
2019/03/14 Javascript
详解为element-ui的Select和Cascader添加弹层底部操作按钮
2020/02/07 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python实现绘制树枝简单示例
2014/07/24 Python
Python with的用法
2014/08/22 Python
Python测试人员需要掌握的知识
2018/02/08 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
wxpython绘制音频效果
2019/11/18 Python
python 实现多维数组转向量
2019/11/30 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
用Python制作音乐海报
2021/01/26 Python
移交协议书
2014/08/19 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
清明节主题班会
2015/08/14 职场文书
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫