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 相关文章推荐
PHP合并数组+与array_merge的区别分析
Aug 01 PHP
php引用计数器进行垃圾收集机制介绍
Sep 19 PHP
php网站地图生成类示例
Jan 13 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
php字符串函数学习之strstr()
Mar 27 PHP
php两种无限分类方法实例
Apr 21 PHP
PHP实现批量修改文件后缀名的方法
Jul 30 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
Dec 31 PHP
thinkPHP5分页功能实现方法分析
Oct 25 PHP
php通过各种函数判断0和空
Jul 04 PHP
laravel 获取当前url的别名方法
Oct 11 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 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
VFP与其他应用程序的集成
2006/10/09 PHP
第十一节--重载
2006/11/16 PHP
PHP 读取和编写 XML
2014/11/19 PHP
php类常量用法实例分析
2015/07/09 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
2018/05/11 PHP
php strftime函数的详细用法
2018/06/21 PHP
PDO实现学生管理系统
2020/03/21 PHP
JavaScript入门之基本函数详解
2011/10/21 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
JavaScript 学习笔记之操作符(续)
2015/01/14 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
JavaScript中apply方法的应用技巧小结
2016/09/29 Javascript
微信小程序 数据绑定详解及实例
2016/10/25 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
python下调用pytesseract识别某网站验证码的实现方法
2016/06/06 Python
对python自动生成接口测试的示例讲解
2018/11/30 Python
python字典一键多值实例代码分享
2019/06/14 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
python 怎样进行内存管理
2020/11/10 Python
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
哈理工毕业生的求职信
2013/12/22 职场文书
预防煤气中毒方案
2014/06/16 职场文书
生物科学专业自荐书
2014/06/20 职场文书
CAD实训总结范文
2015/08/03 职场文书
话题作文之诚信
2019/11/28 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python