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 09 PHP
PHP的范围解析操作符(::)的含义分析说明
Jul 03 PHP
php比较两个字符串长度的方法
Jul 13 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 PHP
YII Framework框架教程之缓存用法详解
Mar 14 PHP
php版微信公众平台入门教程之开发者认证的方法
Sep 26 PHP
浅谈PHP中静态方法和非静态方法的相互调用
Oct 04 PHP
PHP在线打包下载功能示例
Oct 15 PHP
Discuz论坛密码与密保加密规则
Dec 19 PHP
PHP实现限制IP访问的方法
Apr 20 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
Sep 01 PHP
PHP实现一个按钮点击上传多个图片操作示例
Jan 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开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
使用js+jquery实现无限极联动
2013/05/23 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
2014/06/16 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
AngularJS中的promise用法分析
2017/05/19 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
使用Vue开发自己的Chrome扩展程序过程详解
2019/06/21 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Python简单的制作图片验证码实例
2017/05/31 Python
神经网络python源码分享
2017/12/15 Python
python实现简易通讯录修改版
2018/03/13 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
教师实习自我鉴定
2013/12/18 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
《一个小村庄的故事》教学反思
2014/04/13 职场文书
四年级学生评语大全
2014/04/21 职场文书
2014年信用社工作总结
2014/11/25 职场文书
上课迟到检讨书
2015/05/06 职场文书
运动会广播稿300字
2015/08/19 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
2021/04/16 PHP