浅析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压缩 在线对文件进行压缩的函数
May 26 PHP
php错误级别的设置方法
Jun 17 PHP
PHP不用递归实现无限分级的例子分享
Apr 18 PHP
PHP生成自定义长度随机字符串的函数分享
May 04 PHP
php导入模块文件分享
Mar 17 PHP
php强制用户转向www域名的方法
Jun 19 PHP
php session 写入数据库
Feb 13 PHP
php 使用html5实现多文件上传实例
Oct 24 PHP
highchart数据源纵轴json内的值必须是int(详解)
Feb 20 PHP
mac os快速切换多个PHP版本的方法
Mar 07 PHP
thinkPHP框架实现多表查询的方法
Jun 14 PHP
Yii框架参数配置文件params用法实例分析
Sep 11 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控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
PHP获取文件相对路径的方法
2015/02/26 PHP
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
python中对list去重的多种方法
2014/09/18 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
python中open函数的基本用法示例
2019/09/07 Python
python实现logistic分类算法代码
2020/02/28 Python
Python如何用filter函数筛选数据
2020/03/05 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
美国最大网上鞋店:Zappos
2016/07/25 全球购物
Myprotein葡萄牙官方网站:英国优质运动营养品牌
2016/09/12 全球购物
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
工商技校毕业生自荐信
2013/11/15 职场文书
口头翻译求职人自荐信
2013/12/07 职场文书
家长评语和期望
2014/02/10 职场文书
教师中国梦演讲稿
2014/04/23 职场文书
商务英语专业求职信
2014/06/26 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python