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 相关文章推荐
建立动态的WML站点(三)
Oct 09 PHP
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
PHP生成月历代码
Jun 14 PHP
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
Aug 07 PHP
PHP类的使用 实例代码讲解
Dec 28 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
May 27 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
PHP使用反射机制实现查找类和方法的所在位置
Apr 22 PHP
PHP微信开发之查询城市天气
Jun 23 PHP
Laravel框架中缓存的使用方法分析
Sep 06 PHP
PHP实现简单的计算器
Aug 28 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
php5.5新数组函数array_column使用
2013/07/08 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
laravel实现查询最后执行的一条sql语句的方法
2019/10/09 PHP
限制复选框的最大可选数
2006/07/01 Javascript
javascript iframe编程相关代码
2009/12/28 Javascript
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
用Python写的图片蜘蛛人代码
2012/08/27 Python
python读写二进制文件的方法
2015/05/09 Python
简单谈谈Python流程控制语句
2016/12/04 Python
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
python实现滑雪游戏
2020/02/22 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
python3.7添加dlib模块的方法
2020/07/01 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
python中的测试框架
2020/11/13 Python
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
.net软件工程师应聘上机试题
2015/03/10 面试题
高级方案规划工程师岗位职责
2013/11/29 职场文书
运动会通讯稿200字
2014/02/16 职场文书
大班幼儿评语大全
2014/04/30 职场文书
母亲节演讲稿
2014/05/27 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
医生个人年度总结
2015/02/28 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
错误码NET::ERR_CERT_DATE_INVALID证书已过期解决方法?
2022/07/07 数码科技