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 相关文章推荐
dedecms中常见问题修改方法总结
Mar 21 PHP
php2html php生成静态页函数
Dec 08 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
Nov 10 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
Jun 07 PHP
php 读取文件头判断文件类型的实现代码
Aug 05 PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 PHP
php中array_multisort对多维数组排序的方法
Jun 21 PHP
WordPress中用于检索模版的相关PHP函数使用解析
Dec 15 PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
Apr 20 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
Mar 22 PHP
yii2的restful api路由实例详解
May 14 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和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
hammer.js实现图片手势放大效果
2017/08/29 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
Python中的条件判断语句基础学习教程
2016/02/07 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
python实现AES加密解密
2019/03/28 Python
python3.5 cv2 获取视频特定帧生成jpg图片
2019/08/28 Python
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
Python中pyecharts安装及安装失败的解决方法
2020/02/18 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
.net笔试题
2014/03/03 面试题
社区爱国卫生月活动总结
2014/06/30 职场文书
美术第二课堂活动总结
2014/07/08 职场文书
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
慰问信模板
2015/02/14 职场文书
人口与计划生育责任书
2015/05/09 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
安全生产协议书
2016/03/22 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB
mysql查看表结构的三种方法总结
2022/07/07 MySQL