php是單繼承還是多繼承呢?


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
";

    }

  }

  //traitTwo

  trait traitTwo{

    // public function test(){

      // echo "this is trait two!";

    // }

    public function testTwo(){

      echo "Two
";

    }

  }

  //繼承基本類,並use trait

  class myCode extends basicTest{

    use traitOne,traitTwo;

    public function test(){

      echo "hehaha!!
";

    }

  }

  $obj = new myCode();

  $obj->testTwo();

注意:

優先級:自身方法>trait的方法>繼承的方法(就是這樣子的。)
如果我們打開上述代碼中的注釋,會報錯,因為兩個trait中的方法重名了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM