ホームページ  >  記事  >  バックエンド開発  >  トレイトとインターフェイスの違いは何ですか?

トレイトとインターフェイスの違いは何ですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-07-01 15:43:023652ブラウズ

トレイトとインターフェイスの違いは次のとおりです: 1. トレイトは include に似ており、use を使用してクラスの途中に配置できます。定義されたメソッドはクラスの一部であり、直接インスタンス化することはできません。2.インターフェース内のメソッドは仮想メソッドであり、継承時にこれらのメソッドを再定義する必要があります。

トレイトとインターフェイスの違いは何ですか?

トレイトとインターフェイスの違いは次のとおりです:

1、trait は次のようになります。これはコードの再利用のために書かれた小さなプラグインです。include に似ています。use を使用してクラスの途中に配置できるため、トレイトで定義されたメソッドはクラスの一部となり、直接インスタンス化できません。 。

2. interface のメソッドはすべて仮想メソッドであり、継承時にこれらのメソッドを再定義する必要があります。つまり、メソッドは説明的なものであり、実際の操作はありません。継承する場合は、これらのメソッドを実装する必要があります。実装しないとエラーが発生するため、メソッドを省略することはできません。インターフェイスは、インスタンスが所有するプロパティとメソッドを抽象的に定義するためにアーキテクチャでよく使用されます。簡単に言うと、上司から与えられた任務、合意のようなものです。相続したい場合は、この合意を満たさなければなりません。つまり、上司から割り当てられたタスクを完了する必要があります。

<?php
trait MyTrait
{
    protected $var = &#39;MyTrait_var&#39;;
    protected $var1 = &#39;MyTrait_var&#39;;
 
    function __construct()
    {
        echo $this->var."</br>";
    }
 
    function a()
    {
        echo "a"."</br>";
    }
}
 
interface MyInterface
{
    function __construct();
    function b();
}
 
abstract class MyAbstract
{
    protected $var2 = &#39;MyAbstract_var&#39;;
    use MyTrait;
 
    function b()
    {
        echo "b"."</br>";
    }
}
 
class MyClass extends MyAbstract implements MyInterface
{
    protected $var3 = &#39;MyClass_var&#39;;
    function c()
    {
        echo "c"."</br>";
    }
}
 
$class = new MyClass();
$class->a();
$class->b();
$class->c();

上記のコードでは、MyAbstract の function b()MyClass に配置することも、インターフェース MyInterface# に配置することもできます。 MyAbstract によって実装される

##関連する学習の推奨事項:

PHP プログラミングの入門から熟練度まで

以上がトレイトとインターフェイスの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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