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安装全攻略:APACHE
Oct 09 PHP
PHP如何透过ODBC来存取数据库
Oct 09 PHP
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
PHP 基本语法格式
Dec 15 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
php FLEA中二叉树数组的遍历输出
Sep 26 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
Jun 18 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
Oct 11 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 PHP
php插件Xajax使用方法详解
Aug 31 PHP
Thinkphp集成抖音SDK的实现方法
Apr 28 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
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
Symfony的安装和配置方法
2016/03/17 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
vue.js利用defineProperty实现数据的双向绑定
2017/04/28 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
2019/09/13 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
从0搭建vue-cli4脚手架
2020/06/17 Javascript
[01:07]DOTA2次级职业联赛 - Fpb战队宣传片
2014/12/01 DOTA
简明 Python 基础学习教程
2007/02/08 Python
python数据结构之链表详解
2017/09/12 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
有原因的手表:Flex Watches
2019/03/23 全球购物
心理咨询专业自荐信
2014/07/07 职场文书
商场促销活动总结
2014/07/10 职场文书
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
经费申请报告范文
2015/05/18 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记