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 相关文章推荐
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 PHP
基于PHP常用函数的用法详解
May 10 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
浅析linux下apache服务器的配置和管理
Aug 10 PHP
php的ajax简单实例
Feb 27 PHP
php生成验证码,缩略图及水印图的类分享
Apr 07 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
Nov 16 PHP
php实现批量上传数据到数据库(.csv格式)的案例
Jun 18 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
PHP基于面向对象封装的分页类示例
Mar 15 PHP
浅谈PHP中的Trait使用方法
Mar 22 PHP
laravel5.6中的外键约束示例
Oct 23 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入门学习笔记之一
2010/10/12 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
php在线解压ZIP文件的方法
2014/12/30 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
jquery图形密码实现方法
2015/03/11 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
2019/05/08 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
python正则表达式re模块详解
2014/06/25 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
python中的闭包函数
2018/02/09 Python
详解python算法之冒泡排序
2019/03/05 Python
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
蔻驰法国官网:COACH法国
2018/11/14 全球购物
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
2013年学期结束动员演讲稿
2014/01/07 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
2016年母亲节寄语
2015/12/04 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android