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 高级课程笔记 面向对象
Jun 21 PHP
PHP初学者常见问题集合 修正版(21问答)
Mar 23 PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
Jul 10 PHP
PHP调用Linux的命令行执行文件压缩命令
Jan 27 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
PHP随机生成随机个数的字母组合示例
Jan 14 PHP
浅谈php函数serialize()与unserialize()的使用方法
Aug 19 PHP
thinkphp框架实现删除和批量删除
Jun 29 PHP
php获取数据库结果集方法(推荐)
Jun 01 PHP
PHP实现简单计算器小程序
Aug 28 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
PHP copy函数使用案例代码解析
Sep 01 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
smtp邮件发送一例
2006/10/09 PHP
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
php生成固定长度纯数字编码的方法
2015/07/09 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
js中同步与异步处理的方法和区别总结
2013/12/25 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
2014/11/03 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
JavaScript的setter与getter方法
2017/11/29 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
详解js 创建对象的几种方法
2019/03/08 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
Python检测数据类型的方法总结
2019/05/20 Python
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
售后主管岗位职责
2013/12/08 职场文书
信息技术教学反思
2014/02/12 职场文书
授权委托书格式模板
2014/04/03 职场文书
连带责任保证书
2014/04/29 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
民政工作个人总结
2015/02/28 职场文书
新员工试用期自我评价
2015/03/10 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
python实现学员管理系统(面向对象版)
2022/06/05 Python