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 相关文章推荐
PHP常用代码
Nov 23 PHP
PHP对字符串的递增运算分析
Aug 08 PHP
php 带逗号千位符数字的处理方法
Jan 10 PHP
PHP乱码问题,UTF-8乱码常见问题小结
Apr 09 PHP
PHP时间和日期函数详解
May 08 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
再谈PHP中单双引号的区别详解
Jun 12 PHP
基于Swoole实现PHP与websocket聊天室
Aug 03 PHP
PHP基于GD库的图像处理方法小结
Sep 27 PHP
PHP读MYSQL中文乱码的快速解决方法
Oct 01 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
Feb 08 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
Phpbean路由转发的php代码
2008/01/10 PHP
PHP的几个常用数字判断函数代码
2012/04/24 PHP
分享一下贝贝成长进度的php代码
2012/09/14 PHP
js以对象为索引的关联数组
2010/07/04 Javascript
读jQuery之六 缓存数据功能介绍
2011/06/21 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
2016/05/13 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
vue实现未登录跳转到登录页面的方法
2018/07/17 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
解决Python二维数组赋值问题
2019/11/28 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
基于Jquery和Css3代码制作可以缩放的搜索框
2015/11/19 HTML / CSS
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
致标枪运动员广播稿
2014/02/06 职场文书
秋天的雨教学反思
2014/04/27 职场文书
公司年底活动方案
2014/08/17 职场文书
乡镇党员群众路线教育实践活动对照检查材料思想汇报
2014/10/05 职场文书
纪检干部学习心得体会
2016/01/23 职场文书
干货分享:推荐信写作技巧!
2019/06/21 职场文书
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python
nginx之queue的具体使用
2022/06/28 Servers