ホームページ  >  記事  >  バックエンド開発  >  PHPアブストラクトとインターフェースの違いを詳しく解説

PHPアブストラクトとインターフェースの違いを詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-07-03 10:08:071748ブラウズ

この記事は、PHP における抽象とインターフェイスの違いを詳細に分析して紹介したものです。必要な方はぜひ参考にしてください。

1.php インターフェイスクラス: インターフェイス。

実際、それらの関数は非常に単純です。多くの人が一緒にプロジェクトを開発する場合、全員が他の人が作成したいくつかのクラスを呼び出すことがあります。その場合、特定の関数の実装メソッドに名前を付けるにはどうすればよいのかと疑問に思うかもしれません。次に、php インターフェイス クラスが登場します。インターフェイス クラスを定義するとき、その中のメソッドは次のサブクラスによって実装する必要があります。例:

コードは次のとおりです:

 interface Shop
 {
       public function buy($gid);
       public function sell($gid);
       public function view($gid);
 }


ショップ インターフェイス クラスを宣言します。では、buy、sell、view の 3 つのメソッドが定義されており、 Inherit このクラスのすべてのサブクラスはこれらの 3 つのメソッドを実装する必要があります。サブクラスがこれらのメソッドを実装していない場合は機能しません。仕事。実際、インターフェイス クラスは、端的に言えば、クラスのテンプレートであり、クラスの規則です。このカテゴリに属する​​場合は、どのような方法であっても、私の規則に従わなければなりません。それをどうするかはあなた次第です:

コードは次のとおりです:

class BaseShop implements Shop
{
public function buy($gid)
{
echo('你购买了ID为 :'.$gid.'的商品');
}
public function sell($gid)
{
echo('你卖了ID为 :'.$gid.'的商品');
}
public function view($gid)
{
echo('你查看了ID为 :'.$gid.'的商品');
}
}


考えてみてください、多くの人が一緒に作業する大規模なプロジェクトでは、インターフェイス クラスがあると非常に便利です。他の人に尋ねる必要がないように、関数のメソッド名は何ですか? もちろん、これが好きなら仕方ありません。

結論: インターフェイス クラスはクラスのリーダーであり、方向を示し、サブクラスはその指定されたメソッドを完了する必要があります。

2.php 抽象クラス : abstract

実は、抽象クラスとインターフェースクラスは部分的に似ている、という文をどこで見たか覚えていますが、抽象クラスは似ている部分を抜き出したもののようです。実際、抽象クラスの機能は、多くのクラスが繰り返し記述し続けるメソッドを使用していることがわかった場合、抽象クラスの使用を検討できるということです。 「クラスを書き換えて、各パブリック クラスをインスタンス化し、同じメソッドを呼び出す必要はありません。」これは可能です。実際、これは抽象クラスが行うことですが、省略されています。インスタンス化の手順がなければ、次のメソッドを呼び出すのと同じくらい便利です。このクラスを直接使用することも、このメソッドをオーバーロードすることもできます。例:

コードは次のとおりです:

 abstract class BaseShop
  {
      public function buy($gid)
      {
          echo('你购买了ID为 :'.$gid.'的商品');
      }
      public function sell($gid)
      {
          echo('你卖了ID为 :'.$gid.'的商品');
     }
     public function view($gid)
     {
         echo('你查看了ID为 :'.$gid.'的商品');
     }
 }
 class BallShop extends BaseShop
 {
     var $itme_id = null;
     public function construct()
     {
         $this->itme_id = 2314;
     }
     public function open()
     {
         $this->sell($this->itme_id);
     }
 }


上記と同様に、store クラスを定義し、buy、sell、view などのすべての部分とこれらのメソッドを抽出しました。が抽象クラスに実装されると、それを継承するサブクラスがこれらのメソッドを自動的に取得し、サブクラスは独自の処理を実行し、コードの重複を導入して再利用性を向上させます。

結論: 抽象クラスはクラスのサービスプロバイダーです。サービスを提供しないことに不満がある場合は、それらを使用する必要はありません。 、自分で提供することもできます。抽象関数メソッドは、親クラスで宣言されたメソッドであり、サブクラスで実装する必要がありますが、abstract で宣言されていないメソッドはサブクラスのパブリック メソッドとなるため、実装する必要はありません。それらはサブクラスにあります

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

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