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&amp;mysql(四)
Oct 09 PHP
PHP 变量的定义方法
Jan 26 PHP
PHP 设计模式之观察者模式介绍
Feb 22 PHP
php中使用临时表查询数据的一个例子
Feb 03 PHP
PHP实现PDO的mysql数据库操作类
Dec 12 PHP
php实现redis数据库指定库号迁移的方法
Jan 14 PHP
实现PHP搜索加分页
Oct 12 PHP
PHP实现活动人选抽奖功能
Apr 19 PHP
PHP分页显示的方法分析【附PHP通用分页类】
May 10 PHP
YII分模块加载路由的实现方法
Oct 01 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
Oct 10 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 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中使用Sockets 从Usenet中获取文件
2008/01/10 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
js中的闭包学习心得
2018/02/06 Javascript
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
详解vue 命名视图
2019/08/14 Javascript
原生JS实现记忆翻牌游戏
2020/07/31 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
[01:58]DOTA2上海特级锦标赛现场采访:RTZ这个ID到底好不好
2016/03/25 DOTA
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
pytorch读取图像数据转成opencv格式实例
2020/06/02 Python
python七种方法判断字符串是否包含子串
2020/08/18 Python
python wsgiref源码解析
2021/02/06 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
资产评估专业大学生求职信
2013/09/29 职场文书
高校教师思想汇报
2014/01/11 职场文书
高中物理教学反思
2014/02/08 职场文书
升旗仪式主持词
2014/03/19 职场文书
员工工作及收入证明
2014/10/28 职场文书
运动会1000米加油稿
2015/07/21 职场文书
2016年寒假生活小结
2015/10/10 职场文书
2019西餐厅创业计划书范文!
2019/07/12 职场文书