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 XML数据解析代码
May 26 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
Jun 25 PHP
php实现保存submit内容之后禁止刷新
Mar 19 PHP
php文件服务实现虚拟挂载其他目录示例
Apr 17 PHP
php+js实现异步图片上传实例分享
Jun 02 PHP
wamp安装后自定义配置的方法
Aug 23 PHP
ThinkPHP分组下自定义标签库实例
Nov 01 PHP
CodeIgniter控制器之业务逻辑实例分析
Jan 20 PHP
微信公众号开发之文本消息自动回复php代码
Aug 08 PHP
php自定义函数实现统计中文字符串长度的方法小结
Apr 15 PHP
使用Zttp简化Guzzle 调用
Jul 02 PHP
PHP基于XMLWriter操作xml的方法分析
Jul 17 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
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
利用js对象弹出一个层
2008/03/26 Javascript
JS代码放在head和body中的区别分析
2011/12/01 Javascript
jquery连缀语法如何实现
2012/11/29 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
浮动的div自适应居中显示的js代码
2013/12/23 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
微信小程序中如何计算距离某个节日还有多少天
2019/07/15 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
python如何定义带参数的装饰器
2018/03/20 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
python实现登录与注册系统
2020/11/30 Python
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
武汉高蓝德国际.net机试
2016/06/24 面试题
注册资产评估专业求职信
2014/07/16 职场文书
环境科学专业求职信
2014/08/04 职场文书
庆祝国庆节标语
2014/10/09 职场文书
工作检讨书大全
2015/01/26 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书
中学总务处工作总结
2015/08/12 职场文书
Mysql排序的特性详情
2021/11/01 MySQL
python中的sys模块和os模块
2022/03/20 Python
MYSQL常用函数介绍
2022/05/05 MySQL
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS