富贵资源网 Design By www.hznty.com
接口
PHP类是单继承,也就是不支持多继承,当一个类需要多个类的功能时,继承就无能为力了,为此PHP引入了接口技术
如果一个抽象类里面的所有方法都是抽象方法,且没有声明变量,而且接口里面所有的成员都是public权限的,那么这种特殊的抽象类就叫接口
接口使用interface关键字定义,并使用implements来实现接口的方法,且必须完全实现
实现一个接口
下面给出PHP接口实现的一个实际例子,在此创建并实现了一个名为IPillage的接口,IPillage接口如下:
interface IPillage { function emptyBakAccount(); function burnDocument(); }
然后通过Executive类实现此接口:
class Executive extends Employee implements IPillage { private $totalStockOptions; function emptyBankAccount() { echo "Call CFO and ask to transfer funds to Swiss bank account."; } function burnDocuments() { echo "Torch the office suite."; } }
因为公司中所有级别的人都能进行侵占,所以可以有Assistant类实现此接口:
class Assistant extends Employee implements IPillage { function takeMome() { echo "Taking memo..."; } function emptyBankAccount() { echo "Go on shopping spree with office credit card."; } function burnDocuments() { echo "Start small fire in the trash can."; } }
可以看到,接口特别有用。因为,虽然它们定义了发生某一行为需要多少个方法,以及各个方法的名字,但接口允许不同的类,以不同的方式来实现这些方法。在这个例子中,对于烧文件的方法,Assistdnt类只是把文件在垃圾筒里烧掉,而Executive类则通过更过分的方式来做到(将它的办公室烧掉)。
实现多个接口
如果我们允许外来承包商侵占公司是不公平的,毕竟公司是在所有全职员工的努力之下建立的。就是说,怎样为员工提供工作和侵占公司的功能,而限制承包商只能完成所需的任务呢?解决的办法是将这些任务分成几项任务,然后实现必要的多个接口。PHPS 支持这个特性。考虑如下例子:
<"htmlcode"><"wangzhengyi"; const AGE = 25; function fun1 (); // 声明方法默认是public abstract function fun2 (); } /** * 声明接口的继承Demo2 * * @author wzy * */ interface Demo2 extends Demo { function fun3 (); function fun4 (); } /** * 声明接口Demo3 * * @author wzy * */ interface Demo3 { function fun5 (); function fun6 (); } /** * 声明父类ParentClass * * @author wzy * */ class ParentClass { function fun7 (); } /** * 子类必须实现接口中所有的方法 * * @author wzy * */ class ChildClass extends ParentClass implements Demo2, Demo3 { function fun1 (); function fun2 (); function fun3 (); function fun4 (); function fun5 (); function fun6 (); }
富贵资源网 Design By www.hznty.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
富贵资源网 Design By www.hznty.com
暂无评论...