浅析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 zip文件解压类代码
Dec 02 PHP
批量修改RAR文件注释的php代码
Nov 20 PHP
PHP数组实例总结与说明
Aug 23 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
php+ajax导入大数据时产生的问题处理
Jun 11 PHP
php实现获取文章内容第一张图片的方法
Nov 04 PHP
PHP浮点比较大小的方法
Feb 14 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
Mar 31 PHP
php提取微信账单的有效信息
Oct 01 PHP
php使用Swoole实现毫秒级定时任务的方法
Sep 04 PHP
thinkphp 获取控制器及控制器方法
Apr 16 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记录代码执行时间(实现代码)
2013/07/05 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
Javascript函数的参数
2015/07/16 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
基于pako.js实现gzip的压缩和解压功能示例
2017/06/13 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
JavaScript递归算法生成树形菜单
2017/08/15 Javascript
微信小程序之蓝牙的链接
2017/09/26 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
Python计算三维矢量幅度的方法
2015/06/15 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
HTML5 Canvas实现360度全景图的示例代码
2018/01/29 HTML / CSS
机械设计及其自动化专业推荐信
2013/10/31 职场文书
投资合作协议书范本
2014/04/17 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书
信访工作个人总结
2015/03/03 职场文书
2015年暑期社会实践活动总结
2015/03/27 职场文书
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python