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 简单数组排序实现代码
Aug 05 PHP
Discuz 模板语句分析及知识技巧
Aug 21 PHP
php下图片文字混合水印与缩略图实现代码
Dec 11 PHP
php MessagePack介绍
Oct 06 PHP
PHP简单选择排序算法实例
Jan 26 PHP
PHP防盗链的基本思想 防盗链的设置方法
Sep 25 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
Jun 24 PHP
php+Memcached实现简单留言板功能示例
Feb 15 PHP
利用PHP实现一个简单的用户登记表示例
Apr 25 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
PHP 的Opcache加速的使用方法
Dec 29 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 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
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
自己的js工具 Event封装
2009/08/21 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
Python获取远程文件大小的函数代码分享
2014/05/13 Python
Django REST framework 视图和路由详解
2019/07/19 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
2019/08/09 Python
如何使用Python多线程测试并发漏洞
2019/12/18 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
python em算法的实现
2020/10/03 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
Final类有什么特点
2012/04/25 面试题
聊城大学毕业生自荐书
2014/02/01 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
3.12植树节活动总结2014
2014/03/13 职场文书
2014年药房工作总结
2014/11/22 职场文书
服务承诺书
2015/01/19 职场文书
失职检讨书大全
2015/01/26 职场文书
活动总结模板大全
2015/05/11 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle