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();
注:
優先順位: 独自のメソッド > トレイト メソッド > 継承されたメソッド (これがどのように機能するか)
上記のコードのコメントを開くと、2 つの特性のメソッドが同じ名前を持っているため、エラーが報告されます。
推奨チュートリアル: PHP ビデオ チュートリアル
以上がPHP は単一継承ですか、それとも多重継承ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。