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 相关文章推荐
cache_lite试用
Feb 14 PHP
一篇有意思的技术文章php介绍篇
Oct 26 PHP
使用php显示搜索引擎来的关键词
Feb 13 PHP
PHP向socket服务器收发数据的方法
Jan 24 PHP
php单文件版在线代码编辑器
Mar 12 PHP
PHP中isset与array_key_exists的区别实例分析
Jun 02 PHP
必须收藏的php实用代码片段
Feb 02 PHP
基于laravel制作APP接口(API)
Mar 15 PHP
php unicode编码和字符串互转的方法
Aug 12 PHP
yii2 数据库读写分离配置示例
Feb 10 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
php fread函数使用方法总结
May 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
Function eregi is deprecated (解决方法)
2013/06/21 PHP
PHP跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
php数组使用规则分析
2015/02/27 PHP
php遍历CSV类实例
2015/04/14 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
jquery按回车提交数据的代码示例
2013/11/05 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
纯css下拉菜单 无需js
2016/08/15 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
详解node HTTP请求客户端 - Request
2017/05/05 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
基于Webpack4和React hooks搭建项目的方法
2019/02/05 Javascript
JS事件流与事件处理程序实例分析
2019/08/16 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
对python中raw_input()和input()的用法详解
2018/04/22 Python
python 对key为时间的dict排序方法
2018/10/17 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
python中time tzset()函数实例用法
2021/02/18 Python
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
优秀教师感人事迹材料
2014/05/04 职场文书
云南省召开党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
健康状况证明书
2014/11/26 职场文书
优秀教师先进材料
2014/12/16 职场文书
土木工程生产实习心得体会
2016/01/22 职场文书
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL