浅析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操作文件方法问答
Mar 16 PHP
删除及到期域名的查看(抢域名必备哦)
May 14 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
Apr 12 PHP
深入PHP数据加密详解
Jun 18 PHP
Php连接及读取和写入mysql数据库的常用代码
Aug 11 PHP
PHP实现自动对图片进行滚动显示的方法
Mar 12 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
Jul 06 PHP
一张表搞清楚php is_null、empty、isset的区别
Jul 07 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
Laravel配置全局公共函数的方法步骤
May 09 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
Apr 23 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
PHP用户指南-cookies部分
2006/10/09 PHP
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
JS多物体 任意值 链式 缓冲运动
2012/08/10 Javascript
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
JavaScript中filter的用法实例分析
2019/02/27 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
python实现拓扑排序的基本教程
2018/03/11 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Python 中的lambda函数介绍
2018/10/10 Python
解决Django连接db遇到的问题
2019/08/29 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
医生进修自我鉴定
2014/01/19 职场文书
机械机修工岗位职责
2014/08/03 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
中学生运动会广播稿
2015/08/19 职场文书
2016年父亲节寄语
2015/12/04 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
2021年国漫热度排行前十,完美世界上榜,第四是美国动画作品
2022/03/18 国漫