浅析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 相关文章推荐
坏狼php学习 计数器实例代码
Jun 15 PHP
php开启安全模式后禁用的函数集合
Jun 26 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
Nov 07 PHP
php截取字符串并保留完整xml标签的函数代码
Feb 06 PHP
php json_encode值中大括号与花括号区别
Sep 30 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
PHP直接修改表内容DataGrid功能实现代码
Sep 24 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
Joomla调用系统自带编辑器的实现方法
May 05 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
May 19 PHP
php array_map()函数实例用法
Mar 03 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
检测png图片是否完整的php代码
2010/09/06 PHP
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
PHP编程中的常见漏洞和代码实例
2014/08/06 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
提高网站信任度的技巧
2008/10/17 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
jquery利用拖拽方式在图片上添加热链接
2015/11/24 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
python sort、sorted高级排序技巧
2014/11/21 Python
详解Python中break语句的用法
2015/05/14 Python
Python生成器以及应用实例解析
2018/02/08 Python
python线程池threadpool使用篇
2018/04/27 Python
python和shell获取文本内容的方法
2018/06/05 Python
Python使用Tkinter实现滚动抽奖器效果
2020/01/06 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
护理专科自荐书范文
2014/02/18 职场文书
专业见习报告范文
2014/11/03 职场文书
感恩主题班会教案
2015/08/12 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫
Oracle使用别名的好处
2022/04/19 Oracle
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python