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 相关文章推荐
3.从实例开始
Oct 09 PHP
php项目打包方法
Feb 18 PHP
php一句话cmdshell新型 (非一句话木马)
Apr 18 PHP
PHP set_time_limit(0)长连接的实现分析
Mar 02 PHP
php获取数组中重复数据的两种方法
Jun 28 PHP
修改destoon会员公司的伪静态中的com目录的方法
Aug 21 PHP
PHP整合PayPal支付
Jun 11 PHP
Yii的Srbac插件用法详解
Jul 14 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
Sep 11 PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
CI框架网页缓存简单用法分析
Dec 26 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中输出转义JavaScript代码的实现代码
2011/04/22 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
php实现点击可刷新验证码
2015/11/07 PHP
合格的PHP程序员必备技能
2015/11/13 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
2017/09/13 PHP
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
javascript调试之DOM断点调试法使用技巧分享
2014/04/15 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
一步步教你用Python实现2048小游戏
2017/01/19 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
pycharm快捷键汇总
2020/02/14 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
用CSS3绘制三角形的简单方法
2015/07/17 HTML / CSS
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
Otel.com:折扣酒店预订
2017/08/24 全球购物
医学生实习自我鉴定
2013/09/27 职场文书
应届本科生推荐信范文
2013/12/25 职场文书
学生安全教育材料
2014/02/14 职场文书
环境日宣传活动总结
2014/07/09 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
商场营业员岗位职责
2015/04/14 职场文书
教师考核鉴定意见
2015/06/05 职场文书
2016年教代会开幕词
2016/03/04 职场文书
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang