トレイトとインターフェイスの違いは次のとおりです: 1. トレイトは include に似ており、use を使用してクラスの途中に配置できます。定義されたメソッドはクラスの一部であり、直接インスタンス化することはできません。2.インターフェース内のメソッドは仮想メソッドであり、継承時にこれらのメソッドを再定義する必要があります。
トレイトとインターフェイスの違いは次のとおりです:
1、trait
は次のようになります。これはコードの再利用のために書かれた小さなプラグインです。include に似ています。use を使用してクラスの途中に配置できるため、トレイトで定義されたメソッドはクラスの一部となり、直接インスタンス化できません。 。
2. interface
のメソッドはすべて仮想メソッドであり、継承時にこれらのメソッドを再定義する必要があります。つまり、メソッドは説明的なものであり、実際の操作はありません。継承する場合は、これらのメソッドを実装する必要があります。実装しないとエラーが発生するため、メソッドを省略することはできません。インターフェイスは、インスタンスが所有するプロパティとメソッドを抽象的に定義するためにアーキテクチャでよく使用されます。簡単に言うと、上司から与えられた任務、合意のようなものです。相続したい場合は、この合意を満たさなければなりません。つまり、上司から割り当てられたタスクを完了する必要があります。
<?php trait MyTrait { protected $var = 'MyTrait_var'; protected $var1 = 'MyTrait_var'; function __construct() { echo $this->var."</br>"; } function a() { echo "a"."</br>"; } } interface MyInterface { function __construct(); function b(); } abstract class MyAbstract { protected $var2 = 'MyAbstract_var'; use MyTrait; function b() { echo "b"."</br>"; } } class MyClass extends MyAbstract implements MyInterface { protected $var3 = 'MyClass_var'; function c() { echo "c"."</br>"; } } $class = new MyClass(); $class->a(); $class->b(); $class->c();
上記のコードでは、MyAbstract の function b()
を MyClass
に配置することも、インターフェース MyInterface
# に配置することもできます。 MyAbstract によって実装される
##関連する学習の推奨事項:
以上がトレイトとインターフェイスの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。