ホームページ >バックエンド開発 >PHPの問題 >PHPは多重継承をサポートしていますか?

PHPは多重継承をサポートしていますか?

(*-*)浩
(*-*)浩オリジナル
2019-09-12 09:18:495592ブラウズ

PHPは多重継承をサポートしていますか?

質問: 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。