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 $_FILES函数详解
Mar 09 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
解析php下载远程图片函数 可伪造来路
Jun 25 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
php多功能图片处理类分享(php图片缩放类)
Mar 14 PHP
PHP stream_context_create()函数的使用示例
May 12 PHP
变量在 PHP7 内部的实现(一)
Dec 21 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
PHP通过GD库实现验证码功能示例
Feb 23 PHP
php实现网页上一页下一页翻页过程详解
Jun 28 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
Oct 11 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 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
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
2018/01/15 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
Js判断参数(String,Array,Object)是否为undefined或者值为空
2013/11/04 Javascript
javascript结合ajax读取txt文件内容
2014/12/05 Javascript
javascript事件冒泡简单示例
2016/06/20 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
Bootstrap框架实现广告轮播效果
2016/11/28 Javascript
Node.js中process模块常用的属性和方法
2016/12/13 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
node.js + socket.io 实现点对点随机匹配聊天
2017/06/30 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
2017/08/16 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
js实现图片无缝循环轮播
2019/10/28 Javascript
使用PYTHON接收多播数据的代码
2012/03/01 Python
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
对Python 数组的切片操作详解
2018/07/02 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
总裁秘书岗位职责
2013/12/04 职场文书
学期研究性学习个人的自我评价
2014/01/09 职场文书
民族学专业大学生职业规划范文:清晰未来的构想
2014/09/20 职场文书
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript