浅析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编程最快明白(第一讲 软件环境和准备工作)
Oct 25 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
Nov 26 PHP
PHP 函数call_user_func和call_user_func_array用法详解
Mar 02 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
May 12 PHP
PHP过滤黑名单关键字的方法
Dec 01 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
Dec 04 PHP
php实现递归抓取网页类实例
Apr 03 PHP
PHP+Ajax实时自动检测是否联网的方法
Jul 01 PHP
PHP开发Apache服务器配置
Jul 15 PHP
php三种实现多线程类似的方法
Oct 30 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
yii2局部关闭(开启)csrf的验证的实例代码
Jul 10 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
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
多重?l件?合查?(二)
2006/10/09 PHP
set_include_path在win和linux下的区别
2008/01/10 PHP
php生成短域名函数
2015/03/23 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
Vue 父子组件、组件间通信
2017/03/08 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
2017/05/22 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
Python实现二维有序数组查找的方法
2016/04/27 Python
pyqt5自定义信号实例解析
2018/01/31 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
Python操作word文档插入图片和表格的实例演示
2020/10/25 Python
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
如何通过jdbc调用存储过程
2012/04/19 面试题
机械专业应届生求职信
2013/09/21 职场文书
国旗下的演讲稿
2014/05/08 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
电影圆明园观后感
2015/06/03 职场文书
公司保洁员管理制度
2015/08/04 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
SqlServer 垂直分表(减少程序改动)
2021/04/16 SQL Server