質問: PHP は多重継承をサポートしていますか?
回答: いいえ、単一継承のみがサポートされています。
#多重継承を実装するにはどうすればよいですか?
回答: インターフェイスまたはトレイトを使用して実装できます。 (推奨学習:PHP プログラミング入門から習熟まで )
インターフェース ここではあまり説明しませんが、原則として 1 つのクラスで複数のインターフェースを実装できます。次のコードはこれを示しています。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!": } }多重継承のトレイト実装に焦点を当てましょう (実際には多重継承とは呼ばれません。多重継承に似た機能と呼ぶべきです)
それでは、特性?
答え: クラスとインターフェースの両方のように見えますが、実際にはどちらでもありません。特性はクラスの部分的な実装とみなされ、1 つ以上の既存の要素に混合できます。 PHP クラス: クラスが実行できることを示す機能と、モジュール実装を提供する機能の 2 つがあります。 Trait は、PHP の単一継承制限に対する柔軟なコード再利用メカニズムを提供するコード再利用テクノロジです。それでは、特性を実装するにはどうすればよいでしょうか?次のコードを見てください:
//基本类 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();
注:
優先順位: 独自のメソッド>特性メソッド>継承メソッド以上がPHPは多重継承をサポートしていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。