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无敌近乎加密方式!
Jul 17 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
Aug 01 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
Nov 21 PHP
PHP 万年历实现代码
Oct 18 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
php常用hash加密函数
Nov 22 PHP
PHP的关于变量和日期处理的一些面试题目整理
Aug 10 PHP
双冒号 ::在PHP中的使用情况
Nov 05 PHP
PHP数组操作简单案例分析
Oct 15 PHP
thinkPHP5.0框架命名空间详解
Mar 18 PHP
PHP用continue跳过本次循环中剩余代码的注意点
Jun 27 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
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
php可变长参数处理函数详解
2017/02/22 PHP
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
php xhprof使用实例详解
2019/04/15 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
图片懒加载插件实例分享(含解析)
2017/01/09 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
js数组的基本使用总结
2021/01/18 Javascript
对Python2与Python3中__bool__方法的差异详解
2018/11/01 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
详解python中@的用法
2019/03/27 Python
python时间日期操作方法实例小结
2020/02/06 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
Python爬虫简单运用爬取代理IP的实现
2020/12/01 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
大三在校生电子商务求职信
2013/10/29 职场文书
预备党员党课思想汇报
2014/01/13 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
装配出错检讨书
2014/09/23 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
行政助理岗位职责范本
2015/04/11 职场文书
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers
浅析Python OpenCV三种滤镜效果
2022/04/11 Python
windows系统安装配置nginx环境
2022/06/28 Servers