PHP是不支援多繼承的,那要如何實現多繼承呢?
可以使用interface或trait 實作
interface這裡我們就不做過多的說明了,它的原理就是一個類別可以實作多個介面。下面這段程式碼就能夠說明。
interface test1{ public function connect(); } interface test2{ public function contact(); } // 类可以同时实现多个接口 class myCode implements test1,test2{ public function connect(){ echo "test1!"; } public function contact(){ echo "test2!": } }
下面我們將重點討論trait實作多繼承(其實也不叫多繼承,應該叫類似多繼承的功能)
那什麼是trait呢?
答:看上去既像類又像接口,其實都不是,Trait可以看做類的部分實現,可以混入一個或多個現有的PHP類中,其作用有兩個:表明類可以做什麼;提供模組化實作。 Trait是一種程式碼重複使用技術,為PHP的單一繼承限制提供了一套靈活的程式碼重複使用機制。
那麼怎麼實現trait呢?看下面程式碼:
//基本类 class basicTest{ public function test(){ echo "hello,world\n"; } } //traitOne trait traitOne{ public function test(){ echo "this is trait one"; } public function testOne(){ echo "one<br />"; } } //traitTwo trait traitTwo{ // public function test(){ // echo "this is trait two!"; // } public function testTwo(){ echo "Two<br />"; } } //继承基本类,并use trait class myCode extends basicTest{ use traitOne,traitTwo; public function test(){ echo "hehaha!!<br />"; } } $obj = new myCode(); $obj->testTwo();
注意:
優先權:自身方法>trait的方法>繼承的方法(就是這樣子的。)
如果我們打開上述程式碼中的註釋,會報錯,因為兩個trait中的方法重名了。
推薦教學:PHP影片教學
#以上是PHP是單繼承還是多繼承的詳細內容。更多資訊請關注PHP中文網其他相關文章!