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 相关文章推荐
用Apache反向代理设置对外的WWW和文件服务器
Oct 09 PHP
自动把纯文本转换成Web页面的php代码
Aug 27 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
Apr 18 PHP
php&mysql 日期操作小记
Feb 27 PHP
PHP动态生成javascript文件的2个例子
Apr 11 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
PHP创建word文档的方法(平台无关)
Mar 29 PHP
PHP+Ajax+JS实现多图上传
May 07 PHP
phpcms中的评论样式修改方法
Oct 21 PHP
使用vs code编辑调试php配置的方法
Jan 29 PHP
laravel框架添加数据,显示数据,返回成功值的方法
Oct 11 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
Oct 14 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
利用static实现表格的颜色隔行显示
2006/10/09 PHP
Thinkphp中import的几个用法详细介绍
2014/07/02 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
PHP多文件上传实例
2015/07/09 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
JavaScript实现动态生成表格
2020/08/02 Javascript
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
Python获取服务器信息的最简单实现方法
2015/03/05 Python
python清除字符串里非字母字符的方法
2015/07/02 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
Python 的字典(Dict)是如何存储的
2019/07/05 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
Java的基础面试题附答案
2016/01/10 面试题
教师申诉制度
2014/01/29 职场文书
初中班主任评语大全
2014/04/24 职场文书
项目经理任命书
2014/06/04 职场文书
收款委托书范本
2014/09/11 职场文书
环卫工作汇报材料
2014/10/28 职场文书
健康证明
2015/06/19 职场文书
严以律己学习心得体会
2016/01/13 职场文书
浅谈Java父子类加载顺序
2021/08/04 Java/Android
Java设计模式之享元模式示例详解
2022/03/03 Java/Android