PHP面向对象多态性实现方法简单示例


Posted in PHP onSeptember 27, 2017

本文实例讲述了PHP面向对象多态实现方法。分享给大家供大家参考,具体如下:

多态:父类引用指向子类对象(面向对象中能够根据使用类的上下文(使用输入不同的类调用不同类的方法)来重新定义或改变类的性质和行为。);接口引用指向实现接口的类对象。

面向对象:把数据(属性),操作数据的方法,逻辑,形成一个类,把类抽象出来形成对象,通过对象使用类;

<?php
class work{
  function polymorphic($obj){
    //检查是否引用类型(obj是否继承animal类)
    if($obj instanceof animal){
      $obj -> fun();
    }
    else{
      echo "no function";
    }
  }
  //如果需要指定类 (指定cat类,包含cat子类)
  function bose(cat $obj){
    $obj->fun();
  }
}
//抽象类
 abstract class animal{
  abstract function fun();
}
//cat猫类
class cat extends animal{
  function fun(){
    echo "cat say miaomiao...";
  }
}
//dog狗类
class dog extends animal{
  function fun(){
    echo "dog say wangwang...";
  }
}
class mouse extends cat{
}
//先new一个work类
$new_work = new work();
//然后通过new_work对象 调用 polymorphic 方法,传入不同的类实现 父类引用指向子类对象;接口引用指向实现接口的类对象(多态)。
$new_work->polymorphic(new cat());
echo '<br/>';
$new_work->polymorphic(new dog());
echo '<br/>';
//指定类方式仿java
$new_work->bose(new cat());
echo '<br/>';
//如果传输其他类,或者未继承cat类则会报错
//$new_work->bose(new dog());
echo '<br />';
//这也不会报错
$new_work->bose(new mouse());

运行结果:

cat say miaomiao...
dog say wangwang...
cat say miaomiao...

cat say miaomiao...

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一个从别的网站抓取信息的例子(域名查询)
Oct 09 PHP
php中使用$_REQUEST需要注意的一个问题
May 02 PHP
解决Codeigniter不能上传rar和zip压缩包问题
Mar 07 PHP
Linux安装配置php环境的方法
Jan 14 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
Feb 23 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
JSON字符串传到后台PHP处理问题的解决方法
Jun 05 PHP
基于PHP微信红包的算法探讨
Jul 21 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
Feb 17 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
实例分析基于PHP微信网页获取用户信息
Nov 24 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
Sep 27 #PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
Sep 26 #PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 #PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 #PHP
php安装扩展mysqli的实现步骤及报错解决办法
Sep 23 #PHP
php mysql PDO 查询操作的实例详解
Sep 23 #PHP
PHP实现权限管理功能示例
Sep 22 #PHP
You might like
PHP执行速率优化技巧小结
2008/03/15 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
php准确计算复活节日期的方法
2015/04/18 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
网络之美 JavaScript中Get和Set访问器的实现代码
2010/09/19 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
微信小程序实现左滑修改、删除功能
2020/10/19 Javascript
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
python中global用法实例分析
2015/04/30 Python
Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
2016/07/01 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
英国绿色商店:Natural Collection
2019/05/03 全球购物
商业项目策划方案
2014/06/05 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
村党建工作汇报材料
2014/11/02 职场文书
怎么写工作检讨书
2014/11/16 职场文书
生日答谢词
2015/01/05 职场文书
发票退票证明
2015/06/24 职场文书
主婚人致辞精选
2015/07/28 职场文书
外出听课学习心得体会
2016/01/15 职场文书
2019年警察入党转正申请书最新范文
2019/09/03 职场文书
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python