浅析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中get_headers函数的作用及用法的详细介绍
Apr 27 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
解析link_mysql的php版
Jun 30 PHP
开启PHP的伪静态模式
Dec 31 PHP
PHP书写格式详解(必看)
May 23 PHP
php常用字符函数实例小结
Dec 29 PHP
PHP使用数组实现矩阵数学运算的方法示例
May 29 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
Mar 31 PHP
PHP addAttribute()函数讲解
Feb 03 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
May 13 PHP
浅谈laravel数据库查询返回的数据形式
Oct 21 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 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开发的一些注意点总结
2010/10/12 PHP
php中取得文件的后缀名?
2012/02/20 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
document.all还是document.getElementsByName?
2006/07/21 Javascript
告诉大家什么是JSON
2008/06/10 Javascript
jquery ready函数源代码研究
2009/12/06 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
jQuery Easyui 下拉树组件combotree
2016/12/16 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
下载给定网页上图片的方法
2014/02/18 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
Python3实现取图片中特定的像素替换指定的颜色示例
2019/01/24 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
python代码中怎么换行
2020/06/17 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
自荐信格式范文
2013/10/07 职场文书
新入职员工工作总结
2015/10/15 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
2016大学军训心得体会
2016/01/11 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
SQL Server使用PIVOT与unPIVOT实现行列转换
2022/05/25 SQL Server