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 16 PHP
php HtmlReplace输入过滤安全函数
Jul 03 PHP
php自定义加密与解密程序实例
Dec 31 PHP
PHP永久登录、记住我功能实现方法和安全做法
Apr 27 PHP
PHP 读取大文件并显示的简单实例(推荐)
Aug 12 PHP
PHP基于反射机制实现插件的可插拔设计详解
Nov 10 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
Feb 14 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 PHP
PHP5.6读写excel表格文件操作示例
Feb 26 PHP
laravel-admin 实现给grid的列添加行数序号的方法
Oct 08 PHP
PHP利用curl发送HTTP请求的实例代码
Jul 09 PHP
PHP dirname功能及原理实例解析
Oct 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
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
PHP获取文件后缀名的三个函数
2012/10/15 PHP
基于PHP中的常用函数回顾
2013/07/11 PHP
PHP实现的限制IP投票程序IP来源分析
2016/05/04 PHP
php 的反射详解及示例代码
2016/08/25 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
csdn 博客的css样式 v3
2009/02/24 Javascript
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
jquery实现的判断倒计时是否结束代码
2016/02/05 Javascript
基于javascript制作经典传统的拼图游戏
2016/03/22 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
vue slot与传参实例代码讲解
2019/04/28 Javascript
javascript History对象原理解析
2020/02/17 Javascript
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
python算法演练_One Rule 算法(详解)
2017/05/17 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
H5离线存储Manifest原理及使用
2020/04/28 HTML / CSS
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
南京迈特望C/C++面试题
2012/07/09 面试题
EntityManager都有哪些方法
2013/11/01 面试题
职工趣味运动会方案
2014/02/10 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
Java SSM配置文件案例详解
2021/08/30 Java/Android