浅析php中抽象类和接口的概念以及区别


Posted in PHP onJune 27, 2013
//抽象类的定义:
abstract class ku{  //定义一个抽象类
  abstract function kx();
  ......
}
function aa extends ku{
  //实现抽象类的方法
  function kx(){
    echo 'sdsf';
  }
}
//使用方法
$aa=new aa;
$aa->kx();
//1.定义一些方法,子类必须完全实现这个抽象中所有的方法
//2.不能从抽象类创建对象,它的意义在于被扩展
//3.抽象类通常具有抽象方法,方法中没有大括号
//4.抽象方法不必实现具体的功能,由子类来完成
//5.在子类实现抽象类的方法时,其子类的可见性必须大于或等于抽象方法的定义
//6.抽象类的方法可以有参数,也可以为空
//7.如果抽象方法有参数,那么子类的实现也必须有相同的参数个数
//////////////////////////////接口类的定义:
interface Shop{
      public   function buy($gid);
      public   function sell($gid);
      abstract function view($gid);
}
//如果要使用接口,必须定义接口类中的所以方法少一个都不可以(abstract除外)。
//这样如果在一个大项目中不管别人怎么去做下面的方法,但是他必须实现本接口中的所有方法才可以!
//例:实现上面的接口的一种方法
class BaseShop implements Shop{
   public function buy($gid){
      echo '你购买了ID为 :' . $gid . '的商品';
   }
   public function sell($gid){
      echo '你购卖ID为 :' . $gid . '的商品';
   }
   public function view($gid){
      echo '你浏览了ID为 :' . $gid . '的商品';
   }
}
//接口的多重继承示例:
<?php
interface staff_i1{ //接口1
  function setID();
  function getID();
}
interface staff_i2{ //接口2
  function setName();
  function getName();
}
class staff implements staff_i1,staff_i2{
  private $id;
  private $name;
  function setID($id){
    $this->id = $id;
  }
  function getID(){
    return $this->id;
  }
  function setName($name){
    $this->name = $name;
  }
  function getName(){
    return $this->name;
  }
  function otherFunc(){ //这是一个接口中不存在的方法
    echo “Test”;
  }
}
?>

他们的不同点:
1。抽象类中可以有非抽象的方法而接口中只能够有抽象的方法!
2。一个类可以继承多个接口,而一个类只能继承一个抽象类!
3。接口的使用方式通过implements关键字进行,抽象类则是通过继承extends关键字进行!
PHP 相关文章推荐
用函数读出数据表内容放入二维数组
Oct 09 PHP
基于PHP编程注意事项的小结
Apr 27 PHP
php 判断网页是否是utf8编码的方法
Jun 06 PHP
PHP实现CSV文件的导入和导出类
Mar 24 PHP
php通过获取头信息判断图片类型的方法
Jun 26 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
微信支付扫码支付php版
Jul 22 PHP
thinkPHP模板中for循环与switch语句用法示例
Nov 30 PHP
php一个文件搞定微信jssdk配置
Dec 12 PHP
php头像上传预览实例代码
May 02 PHP
php装饰者模式简单应用案例分析
Oct 23 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 PHP
领悟php接口中interface存在的意义
Jun 27 #PHP
CURL状态码列表(详细)
Jun 27 #PHP
解析linux下安装memcacheq(mcq)全过程笔记
Jun 27 #PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 #PHP
深入解析phpCB批量转换的代码示例
Jun 27 #PHP
使用PHP获取汉字的拼音(全部与首字母)
Jun 27 #PHP
Memcached常用命令以及使用说明详解
Jun 27 #PHP
You might like
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
JS实现的简单四则运算计算器功能示例
2017/09/27 Javascript
详解vue中axios的使用与封装
2019/03/20 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
2019/05/10 Javascript
JS中的算法与数据结构之集合(Set)实例详解
2019/08/20 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
python使用pandas实现数据分割实例代码
2018/01/25 Python
Python线性回归实战分析
2018/02/01 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
2018/03/15 Python
Flask框架web开发之零基础入门
2018/12/10 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
Python中Unittest框架的具体使用
2019/08/27 Python
python getpass实现密文实例详解
2019/09/24 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
中专毕业生自我鉴定
2014/02/02 职场文书
师范生自我鉴定
2014/03/20 职场文书
关于迟到的检讨书
2015/05/06 职场文书
基层党建工作简报
2015/07/21 职场文书
孙振耀退休感言
2015/08/01 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
MySQL中varchar和char类型的区别
2021/11/17 MySQL
Python使用MapReduce进行简单的销售统计
2022/04/22 Python