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 相关文章推荐
数据库的日期格式转换
Oct 09 PHP
php实现天干地支计算器示例
Mar 14 PHP
PHP把网页保存为word文件的三种方法
Apr 01 PHP
PHP实现对文本数据库的常用操作方法实例演示
Jul 04 PHP
PHP使用CURL_MULTI实现多线程采集的例子
Jul 29 PHP
实现PHP+Mysql无限分类的方法汇总
Mar 02 PHP
php遍历树的常用方法汇总
Jun 18 PHP
开启PHP Static 关键字之旅模式
Nov 13 PHP
php创建图像具体步骤
Mar 13 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
PHP程序员学习使用Swoole的理由
Jun 24 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 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文件操作实现代码分享
2011/09/01 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
jQuery实现 注册时选择阅读条款 左右移动
2013/04/11 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
js的回调函数详解
2015/01/05 Javascript
JS实现的DIV块来回滚动效果示例
2017/02/07 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
vue中本地静态图片路径写法
2018/03/06 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
2018/04/20 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
JS中实现一个下载进度条及播放进度条的代码
2019/06/10 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
[00:57]辉夜杯战队访谈宣传片—VG
2015/12/25 DOTA
python让图片按照exif信息里的创建时间进行排序的方法
2015/03/16 Python
实例讲解Python中函数的调用与定义
2016/03/14 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
PyQt5实现下载进度条效果
2018/04/19 Python
wx.CheckBox创建复选框控件并响应鼠标点击事件
2018/04/25 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
python如何基于redis实现ip代理池
2020/01/17 Python
在python image 中实现安装中文字体
2020/05/16 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
20年同学聚会邀请函
2014/02/04 职场文书
化妆品促销方案
2014/02/24 职场文书
观后感开头
2015/06/19 职场文书