の特徴を理解する前に 。クラスが他のクラスを拡張できることを意味する継承について学びました。たとえば、クラスBがクラスAを拡張し、クラスCもクラスAを拡張しているとしましょう。つまり、クラスAで定義された関数はクラスBとクラスCからアクセスできますが、クラスBとクラスCが関数Xをオーバーライドし、クラスDが両方のクラスを拡張します。
クラスとインターフェイスの違い
多重継承はPHPでサポートしていませんが、そうなると仮定すると、クラスDはどの関数を実行しますか?クラスBからですか、それともクラスCからですか?したがって、これは実際には多重継承の問題です。そのため、PHPはこれをサポートしていませんが、コードの再利用のために複数のクラスを拡張したい場合が多くあります。
単一継承の問題について話すとき、クラスDはクラスCを拡張しますが、クラスDにクラスBのいくつかの関数が必要な場合はどうでしょうか。これには、PHP5.4で導入された特性を使用できます。シンプルで簡単に作成できます。これはクラスと同じですが、メソッドのグループに対してのみであり、抽象クラスのように、ディスクリートをインスタンス化することはできません。
PHPの特性
一般に、静的メンバーと静的メソッドの両方を定義できるため、開発者は、異なるクラス階層のいくつかの独立したクラスでメソッドを自由に再利用できます。特性は、多重継承、ミックスインに関連する問題を回避し、複雑さも軽減します。
構文:
このようにして、特性を他のクラスに含めることができます。
class Post {useSharable}クラスコメント{useSharable}
PHPは多重継承を許可しないため、Traitを使用して、同じ機能を複数のクラスで再利用できるようにすることで、これを克服します。以下の例は、PHPでの特性の動作を示しています。
func()?>
出力:
実装と拡張Javaの違い
特性の利点
特性は、アプリケーションのコンテキスト内では意味をなさない可能性のある複雑なクラス継承を防ぎながら、コードの重複を減らします。
これにより、明確で簡潔な単純な特性を定義し、必要に応じてその機能を組み合わせることができます。
PHPの特性とインターフェース
一般に、PHPのインターフェイスとトレイトの主な違いは、トレイトは基本的に各クラス内の各メソッドの実際の実装を定義するため、同じインターフェイスが多くのクラスによって実装されますが、動作が異なりますが、トレイトは挿入されたコードのチャンクにすぎませんPHPのクラスで。
これで、Pythonの記事でこれらの特性を終了します。トレイト、トレイトの利点、トレイトとインターフェースの違いについて学んだことを願っています。
このPHPブログに関連性があると思われる場合は、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。
質問がありますか? 「PHPの特性」のコメントセクションでそれについて言及してください。折り返しご連絡いたします。