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 程序员的调试技术小结
Nov 15 PHP
用PHP+MySQL搭建聊天室功能实例代码
Aug 20 PHP
深入php self与$this的详解
Jun 08 PHP
新手菜鸟必读:session与cookie的区别
Aug 22 PHP
PHP根据IP地址获取所在城市具体实现
Nov 27 PHP
php 判断网页是否是utf8编码的方法
Jun 06 PHP
php中删除、清空session的方式总结
Oct 09 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
Mar 18 PHP
PHP随机数 C扩展随机数
May 04 PHP
PHP实现的XML操作类【XML Library】
Dec 29 PHP
PHP钩子与简单分发方式实例分析
Sep 04 PHP
PHP PDOStatement::bindValue讲解
Jan 30 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缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
浅谈python3中input输入的使用
2019/08/02 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
python 元组的使用方法
2020/06/09 Python
python利用platform模块获取系统信息
2020/10/09 Python
皮尔·卡丹巴西官方商店:Pierre Cardin
2017/07/21 全球购物
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
大一学生假期实习的自我评价
2013/10/12 职场文书
大专毕业自我鉴定
2014/02/04 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
关键在于落实心得体会
2014/09/03 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
2014年生产部工作总结
2014/12/17 职场文书
简历自我评价模板
2015/03/11 职场文书
小学教师岗位职责
2015/04/02 职场文书
运动会加油稿30字
2015/07/21 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
2016年社区创先争优活动总结
2016/04/05 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python