首頁  >  文章  >  後端開發  >  PHP介面多繼承及tarits實作多繼承實例分享

PHP介面多繼承及tarits實作多繼承實例分享

小云云
小云云原創
2018-01-11 10:47:141676瀏覽

本文主要介紹了PHP介面多繼承及tarits實現多繼承效果的方法,結合實例形式分析了php基於接口的多繼承及PHP5.4中引入的tarits實現多繼承功能簡單操作技巧,需要的朋友可以參考下,希望能幫助大家。

介面多重繼承

在PHP的物件導向中,介面可以繼承介面。 PHP類別只能繼承一個父類別(單繼承),但是介面可以實作多繼承,可以繼承一個或多個介面。當然介面的繼承也是和類別的繼承一樣使用extends關鍵字,要多個繼承的話只要用逗號把繼承的介面隔開即可。

要注意的是當你介面繼承其它介面時候,直接繼承父介面的靜態常數屬性和抽象方法,所以類別實作介面時必須實作所有相關的抽象方法。

以下舉例說明:

1.繼承單介面


#
<?php
interface 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 .繼承多重介面


<?php
interface 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不是類別!不能被實例化。先來例子看下語法:


<?php
trait myTrait{
  function traitMethod1(){}
  function traitMethod2(){}
}
//然后是调用这个traits,语法为:
class myClass{
  use myTrait;
}
//这样就可以通过use myTraits,调用Traits中的方法了,比如:
$obj = new myClass();
$obj-> traitMethod1 ();
$obj-> traitMethod2 (); 
>

具體的介紹跟使用可以看官方的介紹。

相關推薦:

php實作介面繼承以及介面多重繼承原理的方法

PHP中預先定義的6種介面解析

php使用介面與組合模擬多重繼承_PHP教學

#

以上是PHP介面多繼承及tarits實作多繼承實例分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn