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格式的实现代码
Aug 08 PHP
PHP中替换换行符的几种方法小结
Oct 15 PHP
解析php 版获取重定向后的地址(代码)
Jun 26 PHP
PHP函数getenv简介和使用实例
May 12 PHP
PHP curl 抓取AJAX异步内容示例
Sep 09 PHP
PHP中使用Imagick实现各种图片效果实例
Jan 21 PHP
php析构函数的简单使用说明
Aug 24 PHP
基于PHP生成简单的验证码
Jun 01 PHP
redis查看连接数及php模拟并发创建redis连接的方法
Dec 15 PHP
php输出含有“#”字符串的方法
Jan 18 PHP
laravel实现批量更新多条记录的方法示例
Oct 22 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
Jun 24 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
以文本方式上传二进制文件的PHP程序
2006/10/09 PHP
PHP XML备份Mysql数据库
2009/05/27 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
PHP多进程编程实例详解
2017/07/19 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
PHP实现计算器小功能
2020/08/28 PHP
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
2014/07/29 Javascript
js中日期的加减法
2015/05/06 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
[51:17]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
python中列表元素连接方法join用法实例
2015/04/07 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
Django实现学生管理系统
2019/02/26 Python
详解Python字典的操作
2019/03/04 Python
python爬虫之自制英汉字典
2019/06/24 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
Python 绘制可视化折线图
2020/07/22 Python
使用Python实现NBA球员数据查询小程序功能
2020/11/09 Python
泰国第一在线超市:Tops
2021/02/13 全球购物
电气技术员岗位职责
2013/11/19 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
员工辞职信范文
2015/03/02 职场文书
导游词之天津盘山
2019/11/01 职场文书
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA