ホームページ  >  記事  >  バックエンド開発  >  PHPで多重継承を使用する方法

PHPで多重継承を使用する方法

(*-*)浩
(*-*)浩オリジナル
2019-09-20 14:20:192771ブラウズ

PHPで多重継承を使用する方法

インタビューで、PHP は多重継承をサポートしているかどうかという質問があったのを覚えています。

回答: いいえ、単一継承のみがサポートされています。

#多重継承を実装するにはどうすればよいですか?

回答: インターフェイスまたはトレイトを使用して実装できます。 (推奨学習:

PHP プログラミングの入門から習熟まで )

なぜこの問題を考えるのですか?クラスが複数のインターフェースを継承する場合、それらは同じプロパティとメソッドを持つことになるからです。メソッドまたはプロパティが参照され、誰がオーバーライドされますか?

概要:

1. インターフェイスを使用して、クラスをインスタンス化できないこと、属性は定数でなければならないこと、およびメソッドにメソッド本体を含めることはできないことを宣言します

2. トレイトによって宣言されたクラスはインスタンス化できません。これは use によって導入され、親クラスの同じプロパティとメソッドを上書きします。複数の use がある場合、次のものが同じプロパティとメソッドを上書きします。上から順に

インターフェイスとは何ですか?

インターフェース (インターフェース) を使用すると、特定のクラスが実装する必要があるメソッドを指定できますが、これらのメソッドの具体的な内容を定義する必要はありません。

インターフェースは、標準クラスの定義と同様に、interface キーワードを使用して定義されますが、その中で定義されているメソッドはすべて空です。

インターフェイスで定義されたすべてのメソッドはパブリックである必要があります。これはインターフェイスの特性です。

trait とは何ですか?

これはクラスとインターフェースの両方のように見えますが、実際にはどちらでもありません。

は 1 つのクラスであり、1 つまたは複数の既存の PHP クラスに混合することができます。

には、クラスが実行できることを示す機能と、モジュール実装を提供する機能の 2 つがあります。

Trait は、PHP の単一継承制限に対する柔軟なコード再利用メカニズムを提供するコード再利用テクノロジです。

Trait は、単一継承言語の制限を軽減し、開発者が異なる階層内の独立したクラスのメソッドを自由に再利用できるようにすることを目的としています。Trait とクラスの組み合わせのセマンティクスは、複雑さを軽減し回避する方法を定義します。典型的な問題は、従来の多重継承と Mixin クラスに関連します。

Trait はクラスに似ていますが、きめ細かく一貫した方法で機能を組み合わせるようにのみ設計されています。トレイト自体を通じてインスタンス化することはできません。従来の継承に水平機能の組み合わせが追加されています。つまり、アプリケーション内の複数のクラス間の継承が必要ありません。

Priority

基本クラスから継承されたメンバーは、トレイトによって挿入されたメンバーによってオーバーライドされます。優先順位は、現在のクラスのメンバーがトレイトのメソッドをオーバーライドし、トレイトが継承されたメソッドをオーバーライドすることです。

class Base {
    public function sayHello() {
        echo 'Hello ';
    }
}
trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo 'World!';
    }
}
class MyHelloWorld extends Base {
    use SayWorld;

}
$o = new MyHelloWorld();
$o->sayHello();

use ステートメントに複数の特性をカンマで区切ってリストします。これらはすべてクラスに挿入できます。 ###

以上がPHPで多重継承を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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