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 相关文章推荐
第六节--访问属性和方法
Nov 16 PHP
linux php mysql数据库备份实现代码
Mar 10 PHP
Windows IIS PHP 5.2 安装与配置方法
Jun 08 PHP
PHP5中使用PDO连接数据库的方法
Aug 01 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
Jun 17 PHP
php读取3389的脚本
May 06 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
May 10 PHP
PHP实现WebService的简单示例和实现步骤
Mar 27 PHP
php截取指定2个字符之间字符串的方法
Apr 15 PHP
PHP yii实现model添加默认值的方法(两种方法)
Nov 10 PHP
php使用curl实现ftp文件下载功能
May 16 PHP
Laravel推荐使用的十个辅助函数
May 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简单创建压缩图的方法
2016/08/24 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
2015/10/26 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
Bootstrap入门书籍之(三)栅格系统
2016/02/17 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
[00:18]天涯墨客三技能展示
2018/08/25 DOTA
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
python机器学习之神经网络(一)
2017/12/20 Python
一文带你了解Python中的字符串是什么
2018/11/20 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
国际经济贸易专业推荐信
2013/11/06 职场文书
会计专业自我鉴定
2014/02/10 职场文书
nginx基于域名,端口,不同IP的虚拟主机设置的实现
2021/03/31 Servers
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis
MySQL分区表管理命令汇总
2022/03/21 MySQL
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js