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.ini实现Mysql导入数据库文件最大限制的修改方法
Dec 11 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
Jul 01 PHP
php curl_init函数用法
Jan 31 PHP
PHP Session机制简介及用法
Aug 19 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
Aug 21 PHP
php面向对象中static静态属性和静态方法的调用
Feb 08 PHP
php生成酷炫的四个字符验证码
Apr 22 PHP
php注册和登录界面的实现案例(推荐)
Oct 24 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 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&amp;&amp;mysql)二
2006/10/09 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
php分页示例分享
2014/04/30 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
jquery实现不包含当前项的选择器实例
2015/06/25 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
深入理解JavaScript程序中内存泄漏
2016/03/17 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
python对象与json相互转换的方法
2019/05/07 Python
pandas 时间格式转换的实现
2019/07/06 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
css3实现超炫风车特效
2014/11/12 HTML / CSS
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
NET程序员上机面试题
2015/05/23 面试题
物流合作计划书
2014/01/10 职场文书
化学教学随笔感言
2014/02/19 职场文书
化妆品促销方案
2014/02/24 职场文书
安全生产标语大全
2014/10/06 职场文书
2015中学教师个人工作总结
2015/07/22 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
Mysql文件存储图文详解
2021/06/01 MySQL