php 接口类与抽象类的实际作用


Posted in PHP onNovember 26, 2009

1.php 接口类:interface
其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口类就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如 :

interface Shop 
{ 
public function buy($gid); 
public function sell($gid); 
public function view($gid); 
}

我声明一个shop接口类,定义了三个方法:买(buy),卖(sell),看(view),那么继承此类的所有子类都必须实现这3个方法少一个都不行,如果子类没有实现这些话,就无法运行。实际上接口类说白了,就是一个类的模板,一个类的规定,如果你属于这类,你就必须遵循我的规定,少一个都不行,但是具体你怎么去做,我不管,那是你的事,如:
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.'的商品'); 
} 
}

你想想,在一个多人合作的大项目里面,有了接口类是多么的方便,这样你就不用去问别人,你的某某功能的方法名是什么了,当然如果你们喜欢这样我也没有办法。
结论 : 接口类就是一个类的领导者,指明方向,子类必须完成它指定方法。
2.php 抽象类 : abstract
其实抽象类和接口类有一部分很像,记得在哪里看见这样一句话,抽象类就把类像的部分抽出来,这句看上去很搞笑,其实它说出了抽象类的真理,抽象类的作用是,当你发现你的很多类里面用很多方法你不断的在重复写,那你就可以考虑使用抽象类了,你可能会说“我不是可以重写一个类每个公共类我个实例化一个这个公共类,调用相同的方法就可以了”,这里是可以,实际上抽象类做的工作也就是这个,不过他省去了你实例化的这个步骤,让你就像直接调用本类方法一样方便,而且你还可以重载这个方法。如:
abstract class BaseShop 
{ 
public function buy($gid) 
{ 
echo('你购买了ID为 :'.$gid.'的商品'); 
} 
public function sell($gid) 
{ 
echo('你卖了ID为 :'.$gid.'的商品'); 
} 
public function view($gid) 
{ 
echo('你查看了ID为 :'.$gid.'的商品'); 
} 
} 
class BallShop extends BaseShop 
{ 
var $itme_id = null; 
public function __construct() 
{ 
$this->itme_id = 2314; 
} 
public function open() 
{ 
$this->sell($this->itme_id); 
} 
}

这里是一个例子,想上面一样我定义了一个商店类,抽出了它所有像的部分,买(buy),卖(sell),看(view),并且抽象类里都实现了这些方法,那么继承它的子类就自动获得了这些方法,子类就做它自己独特的东西,介绍代码的重复,提高复用性。
结论: 抽象类就是一个类的服务提供商,拥有众多服务,你不用必须用,当需要的时候你来用就可以,如果你觉得不提供服务不满意,你还可以自己来做。
呵呵,以上就是我对php 接口类,抽象类一些拙见,希望能对搞不清这两个朋友一些帮助,如果什么意见欢迎留言!
PHP 相关文章推荐
打造计数器DIY三步曲(上)
Oct 09 PHP
ajax实现无刷新分页(php)
Jul 18 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
Mar 08 PHP
php实现发送微信模板消息的方法
Mar 07 PHP
php实现修改新闻时删除图片的方法
May 12 PHP
curl和libcurl的区别简介
Jul 01 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
May 11 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
浅谈关于PHP解决图片无损压缩的问题
Sep 01 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
Feb 12 PHP
laravel框架模型和数据库基础操作实例详解
Jan 25 PHP
在mysql数据库原有字段后增加新内容
Nov 26 #PHP
Ajax PHP 边学边练 之三 数据库
Nov 26 #PHP
php 运行效率总结(提示程序速度)
Nov 26 #PHP
Ajax+PHP 边学边练 之二 实例
Nov 24 #PHP
MYSQL 小技巧 -- LAST_INSERT_ID
Nov 24 #PHP
php Memcache 中实现消息队列
Nov 24 #PHP
phplock(php进程锁) v1.0 beta1
Nov 24 #PHP
You might like
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
php动态函数调用方法
2015/05/21 PHP
UTF-8正则表达式如何匹配汉字
2015/08/03 PHP
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
原生JS实现美图瀑布流布局赏析
2015/09/07 Javascript
JS获取复选框的值,并传递到后台的实现方法
2016/05/30 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
JS实现复制功能
2017/03/01 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
Node.js 实现抢票小工具 & 短信通知提醒功能
2019/10/22 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
npm qs模块使用详解
2020/02/07 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
后勤人员自我评价怎么写
2013/09/19 职场文书
《两只鸟蛋》教学反思
2014/02/10 职场文书
施工员岗位职责
2014/03/16 职场文书
入党积极分子党小组意见
2015/06/02 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技