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 相关文章推荐
PHP4之COOKIE支持详解
Oct 09 PHP
PHP 源代码压缩小工具
Dec 22 PHP
destoon各类调用汇总
Jun 20 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
Aug 20 PHP
php强制运行广告的方法
Dec 01 PHP
windows7下php开发环境搭建图文教程
Jan 06 PHP
php中的动态调用实例分析
Jan 07 PHP
php抽象方法和抽象类实例分析
Dec 07 PHP
php 人员权限管理(RBAC)实例(推荐)
May 24 PHP
thinkPHP中U方法加密传递参数功能示例
May 29 PHP
Laravel框架实现的使用smtp发送邮件功能示例
Mar 12 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 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 base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
解析thinkphp基本配置 convention.php
2013/06/18 PHP
PHP 前加at符合@的作用解析
2015/07/31 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
PHP可变变量学习小结
2015/11/29 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
在JavaScript中遭遇级联表达式陷阱
2007/03/08 Javascript
用JS实现3D球状标签云示例代码
2013/12/01 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
jQuery基于json与cookie实现购物车的方法
2016/04/15 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
基于Vue自定义指令实现按钮级权限控制思路详解
2018/05/23 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
2021/01/30 Vue.js
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
2018/06/11 Python
Python Datetime模块和Calendar模块用法实例分析
2019/04/15 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
python用700行代码实现http客户端
2021/01/14 Python
商场活动策划方案
2014/01/24 职场文书
财务会计毕业生个人求职信
2014/02/03 职场文书
校庆团日活动总结
2014/08/28 职场文书
机关领导干部作风整顿整改措施
2014/09/19 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
质检员岗位职责
2015/02/03 职场文书