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中取得image按钮传递的name值
Oct 09 PHP
让PHP支持页面回退的两种方法
Jan 10 PHP
Snoopy类使用小例子
Apr 15 PHP
PHP输入流php://input介绍
Sep 18 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
Jun 23 PHP
destoon文章模块调用企业会员资料的方法
Aug 22 PHP
PHP5.3以上版本安装ZendOptimizer扩展
Mar 27 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
Apr 08 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
PHP实现的XXTEA加密解密算法示例
Aug 28 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 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
Ajax PHP简单入门教程代码
2008/04/25 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
取选中的radio的值
2010/01/11 Javascript
filters.revealTrans.Transition使用方法小结
2010/08/19 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
javascript每日必学之循环
2016/02/19 Javascript
Node.js编写组件的三种实现方式
2016/02/25 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
2019/05/09 Javascript
js实现中文实时时钟
2020/01/15 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
Python 除法小技巧
2008/09/06 Python
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
python3实现表白神器
2019/04/09 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
python实现证件照换底功能
2019/08/20 Python
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
食堂采购员岗位职责
2014/03/17 职场文书
学生个人自我鉴定
2014/03/26 职场文书
文案策划求职信
2014/04/14 职场文书
求职信格式要求
2014/05/23 职场文书
工伤事故赔偿协议书范文
2014/09/24 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
Jedis操作Redis实现模拟验证码发送功能
2021/09/25 Redis
python实现会员管理系统
2022/03/18 Python
Python开发简易五子棋小游戏
2022/05/02 Python