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

怪我咯
リリース: 2023-03-12 18:28:02
オリジナル
1322 人が閲覧しました

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

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

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

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

 interface Shop
 {
       public function buy($gid);
       public function sell($gid);
       public function view($gid);
 }
ログイン後にコピー

ショップ インターフェイス クラスを宣言します。 buy、sell、view の 3 つのメソッドが定義されており、 inherit このクラスのすべてのサブクラスは、これら 3 つのメソッドのいずれかを実装する必要があります。サブクラスがこれら 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);
     }
 }
ログイン後にコピー

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

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

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート