PHP接口多继承及tarits实现多继承效果的方法

接口多继承在php的面向对象中 , 接口可以继承接口 。PHP类只能继承一个父类(单继承) , 但是接口可以实现多继承 , 可以继承一个或者多个接口 。当然接口的继承也是和类的继承一样使用extends关键字 , 要多个继承的话只要用逗号把继承的接口隔开即可 。
需要注意的是当你接口继承其它接口时候 , 直接继承父接口的静态常量属性和抽象方法 , 所以类实现接口时必须实现所有相关的抽象方法 。
下面举例说明:
1.继承单接口
<?phpinterface testA{ function echostr();}interface testB extends testA{ function dancing($name);}class testC implements testB{ function echostr(){ echo "接口继承 , 要实现所有相关抽象方法!"; echo "<br>"; } function dancing($name){ echo $name."正在跳舞!"; }}$demo=new testC();$demo->echostr();$demo->dancing("模特");//运行结果/** 接口继承 , 要实现所有相关抽象方法 模特正在跳舞!**/2.继承多接口
<?phpinterface testA{ function echostr();}interface testB{ function dancing($name);}interface testC extends testA,testB{ function singing($nickname);}class testD implements testC{ function echostr(){ echo "接口继承 , 要实现父接口所有相关方法!"; echo "<br />"; } function dancing($name){ echo $name."正在跳舞!"; echo "<br />"; } function singing($nickname){ echo $nickname."正在唱歌!"; }}$demo=new testD();$demo->echostr();$demo->dancing("模特");$demo->singing("周杰伦");//运行结果/** 接口继承 , 要实现父接口所有相关方法! 模特正在跳舞! 周杰伦正在唱歌!**/tarits多继承多继承里一个类可以同时继承多个父类 , 组合多个父类的功能 C++ 里就是使用这种模型来增强集成的灵活性的 , 但多重继承过于灵活 , 并且会带来“菱形继承” , 故使用起来有不少困难 , 模型变的复杂起来 , 现在大多数语言都放弃了多重继承这一模型 。 
但有的场合想用多继承 , 但PHP又没多继承 , 于是就发明了这样的一个东西 。
Traits可以理解为一组能被不同的类都能调用到的方法集合 , 但Traits不是类!不能被实例化 。先来例子看下语法:
<?phptrait myTrait{ function traitMethod1(){} function traitMethod2(){}}//然后是调用这个traits,语法为:class myClass{ use myTrait;}//这样就可以通过use myTraits , 调用Traits中的方法了 , 比如:$obj = new myClass();$obj-> traitMethod1 ();$obj-> traitMethod2 (); >
【PHP接口多继承及tarits实现多继承效果的方法】


    推荐阅读