浅析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输出xml格式字符串(用的这个)
Jul 12 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
Jul 05 PHP
php和jquery实现地图区域数据统计展示数据示例
Feb 12 PHP
在PHP中使用X-SendFile头让文件下载更快
Jun 01 PHP
PHP中文乱码解决方案
Mar 05 PHP
PHP使用递归方式列出当前目录下所有文件的方法
Jun 02 PHP
php提高网站效率的技巧
Sep 29 PHP
PHP执行linux命令常用函数汇总
Feb 02 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
Oct 11 PHP
php与python实现的线程池多线程爬虫功能示例
Oct 12 PHP
如何在PHP中读写文件
Sep 07 PHP
深入理解PHP+Mysql分布式事务与解决方案
Dec 03 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中的use关键字概述
2014/07/23 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
2014/11/18 PHP
php实现只保留mysql中最新1000条记录
2015/06/18 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python 正则表达式的高级用法
2016/12/04 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
python2.7和NLTK安装详细教程
2018/09/19 Python
python创造虚拟环境方法总结
2019/03/04 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
Python中实现输入一个整数的案例
2020/05/03 Python
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
西班牙在线宠物商店:zooplus.es
2017/02/24 全球购物
公司授权委托书范本
2014/04/03 职场文书
志愿者活动总结
2014/04/28 职场文书
学雷锋演讲稿汇总
2014/05/10 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
机关干部三严三实心得体会
2014/10/13 职场文书
2015年派出所工作总结
2015/04/24 职场文书
全国助残日活动总结
2015/05/11 职场文书
深入讲解数据库中Decimal类型的使用以及实现方法
2022/02/15 MySQL
Spring中的@Transactional的工作原理
2022/06/05 Java/Android
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS