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 相关文章推荐
PHP4和PHP5共存于一系统
Nov 17 PHP
php下网站防IP攻击代码,超级实用
Oct 24 PHP
PHP获取MAC地址的具体实例
Dec 13 PHP
php中\r \r\n \t的区别示例介绍
Feb 08 PHP
PHP连接sql server 2005环境配置及问题解决
Aug 08 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
Sep 22 PHP
PHP使用array_fill定义多维数组的方法
Mar 18 PHP
php $_SESSION会员登录实例分享
Jan 19 PHP
zen_cart实现支付前生成订单的方法
May 06 PHP
php根据数据id自动生成编号的实现方法
Oct 16 PHP
PHP读取zip文件的方法示例
Nov 17 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
Oct 12 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自动更新新闻DIY
2006/10/09 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
php输出xml格式字符串(用的这个)
2012/07/12 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
2013/08/02 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
webpack实现一个行内样式px转vw的loader示例
2018/09/13 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
tensorflow实现KNN识别MNIST
2018/03/12 Python
Django REST framework视图的用法
2019/01/16 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
Python flask框架post接口调用示例
2019/07/03 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
美国保健品专家:Life Extension
2018/05/04 全球购物
小学数学教学反思
2014/02/02 职场文书
企业理念标语
2014/06/09 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
财务出纳岗位职责
2015/03/31 职场文书
公司放假通知范文
2015/04/14 职场文书
廉政承诺书2015
2015/04/28 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript