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简单系统查询模块代码打包下载
Jun 07 PHP
php 删除记录实现代码
Mar 12 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
Jul 03 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
Dec 24 PHP
php实现递归抓取网页类实例
Apr 03 PHP
php检查字符串中是否有外链的方法
Jul 29 PHP
php实现简单的MVC框架实例
Sep 23 PHP
thinkPHP实现MemCache分布式缓存功能
Mar 23 PHP
php上传大文件设置方法
Apr 14 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
Aug 01 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
怎样在JavaScript里写一个swing把数据插入数据库
2012/12/10 Javascript
js切换光标示例代码
2013/10/10 Javascript
JS的get和set使用示例
2014/02/20 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
2014/05/15 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
angularJs 表格添加删除修改查询方法
2018/02/27 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
antd design table更改某行数据的样式操作
2020/10/31 Javascript
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
pycharm中成功运行图片的配置教程
2018/10/28 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
python属于哪种语言
2020/08/16 Python
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
中英双版中文教师求职信
2013/10/27 职场文书
体育教育专业毕业生自荐信
2013/11/15 职场文书
简历中的自我评价怎么写
2014/01/29 职场文书
会计自荐信范文
2014/03/09 职场文书
感恩教育月活动总结
2014/07/07 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
2015年党员公开承诺事项
2015/04/27 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android
SpringBoot+VUE实现数据表格的实战
2021/08/02 Java/Android