php 接口和抽象类
2018-06-22 05:24:33来源:未知 阅读 ()
接口:
interface 在接口内定义方法,可不提供具体的代码实现
作用:提供一个规范,如果我们知道一个类实现了某个接口,那么就知道了可以调用该接口的那些方法,我们只需要知道这些就够了。
当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,我怎么知道他的某个功能的实现方法是怎么命名的呢,我们定义了一个接口类时,
它里面的方式是下面的子类必须实现的,
//声明一个shop接口类,定义了三个方法:买(buy),卖(sell),看(view) interface Shop { public function buy($gid); public function sell($gid); public function view($gid); }
实现给接口时,必须实现该接口的三个方法
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.'的商品'); } }
$a=new BaseShop;
$a->buy(1);//执行buy方法
当我们在团队开发时,接口提供的规范,将提高我们的开发效率
抽象类
抽象类就把类像的部分抽出来,当你发现你的很多类里面用很多方法你不断的在重复写,那你就可以考虑使用抽象类了
注意:对于抽象类中的方法,子类不用全部实现,对于抽象方法,子类必须实现,若非抽象方法,之类可以重写覆盖
<?php abstract class BaseShop { public function buy($gid) { echo('你购买了ID为 :'.$gid.'的商品'); } public function sell($gid) { echo('你卖了ID为:'.$gid.' 的商品'); } abstract function view(); } class BallShop extends BaseShop { var $itme_id = null; public function __construct() { $this->itme_id = 2314; } public function open() { $this->buy($this->itme_id); } public function sell(){ echo "新的sell方法"; } function view(){ echo "实现抽象方法 "; } } $a=new BallShop; $a->open(); $a->sell(); $a->view(); ?> //结果:你购买了ID为 :2314的商品 新的sell方法 实现抽象方法
抽象类里实现了这些方法,那么继承它的子类就自动获得了这些方法,子类就做它自己独特的东西,介绍代码的重复,提高复用性。
接口和抽象类的区别:
- 对接口的使用方式是通过关键字implements来实现的,而对于抽象类的操作是使用类继承的关键字exotends实现的,使用时要特别注意。
- 接口没有数据成员,但是抽象类有数据成员,抽象类可以实现数据的封装。
- 接口没有构造函数,抽象类可以有构造函数。
- 接口中的方法都是public类型,而抽象类中的方法可以使用private、protected或public来修饰。
- 一个类可以同时实现多个接口,但是只能实现一个抽象类。
- 如果要创建一个模型,这个模型将由一些紧密相关的对象采用,就可以使用抽象类。如果要创建将由一些不相关对象采用的功能,就使用接口。
- 如果必须从多个来源继承行为,就使用接口。
- 如果知道所有类都会共享一个公共的行为实现,就使用抽象类,并在其中实现该行为。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:冒泡排序和一点优化,直接上代码
下一篇:构建自己的 PHP 框架
- PHP写UltraEdit插件脚本实现方法 2020-03-29
- php 带逗号千位符数字的处理方法 2020-03-28
- PHP三元运算符的结合性介绍 2020-03-28
- PHP静态延迟绑定和普通静态效率的对比 2020-03-28
- 基于php流程控制语句和循环控制语句 2020-03-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash