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

PHPの抽象クラスとインターフェースの違いは何ですか

coldplay.xixi
coldplay.xixiオリジナル
2021-03-10 17:51:562812ブラウズ

違い: 1. 抽象クラスは属性と通常のメソッドを持つことができますが、インターフェイスには持てません; 2. 抽象クラスには抽象メソッドは存在しない可能性がありますが、インターフェイスには「抽象」メソッドが必要です; 3. 構文:異なる; 4. 抽象クラスは、abstract キーワードでクラスより前に宣言されており、クラスとして宣言されている インターフェイスは、interface で宣言されているが、class では宣言できない; 5. 抽象クラスの抽象メソッドは、必ず必要インターフェイスは必須ではありません; 6. 抽象クラスとインターフェイスは、さまざまな方法で詳細なメソッドを実装します。

PHPの抽象クラスとインターフェースの違いは何ですか

このチュートリアルの動作環境: Windows 7 システム、PHP 8 バージョン、DELL G3 コンピューター。

PHP における抽象クラスとインターフェイスの違い:

抽象クラス: はクラスに基づいており、それ自体がクラスであるだけです。 a 特別なクラスは直接インスタンス化できませんが、クラス内でメソッドと属性を定義できます。テンプレートと同様に、サブクラスも指定後、詳細な機能を実装できます。

インターフェイス: 主にメソッド仕様に基づいており、抽象メソッドよりも独立している点を除けば、抽象クラスの抽象メソッドに似ています。複数のメソッドを組み合わせることで、クラスを新しいクラスに結合できます。

抽象クラスとインターフェイスの類似点:

1. どちらも、特定のものを宣言し、名前とパラメーターを標準化し、モジュールを形成するために使用されます。詳細な説明、実装の詳細。

2. 関連する詳細な作業はクラスを通じて実装されます。

3. 文法的には、抽象クラスの抽象メソッドはインターフェイスと同じであり、メソッド本体を持つことはできません。 {} シンボル

4. 継承を使用できます。インターフェイスはインターフェイスを継承して新しいインターフェイスを形成でき、抽象クラスは抽象クラスを継承して新しい抽象クラスを形成できます。抽象クラスとインターフェイス:

1. 抽象クラスは属性と通常のメソッドを持つことができますが、インターフェイスは属性と通常のメソッドを持つことができません。定数を持つことができます。

2. 抽象クラスは、次のような場合があります。抽象メソッドはありませんが、インターフェイスは必須です。「抽象」メソッドが存在します

3。構文が異なります

4。抽象クラスは、abstract キーワードを持つクラスの前に宣言されます。クラスはクラスとして宣言され、インターフェイスはinterface で宣言されますが、インターフェイスはクラスではないため、class で宣言することはできません。

5. 抽象クラスの抽象メソッドは abstract で宣言する必要がありますが、インターフェイスはそうである必要はありません

6. 抽象クラスは extends キーワードを使用して、サブクラスが継承できるようにします親クラス。クラスは詳細な抽象メソッドを実装します。インターフェイスは実装を使用して、通常のクラスがクラス内のインターフェイスの詳細なメソッドを実装できるようにし、インターフェイスは一度に複数のメソッドを実装できます。各インターフェイスを区切るにはカンマを使用します。

各機能:

抽象クラスには抽象メソッドは存在しない可能性がありますが、抽象メソッドを持つクラスは抽象クラスに存在する必要があります
  1. 抽象クラスでは、たとえそれらがすべて特定のメソッドでありインスタンス化できない場合でも、継承する新しいクラスを作成することによってのみ、インスタンスはクラスを継承できます。
  2. インターフェイスを使用すると、クラスは複数の異なるメソッドを一度に実装できます。 time
  3. インターフェイス自体は抽象ですが、インターフェイスはクラスではありませんが、そのメソッドは抽象であるため、抽象クラスではないことに注意してください。したがって、抽象的でもあります。
  4. 応用と組み合わせ:

以下のコードは私が独自に考えたものであり、実際には応用されていません。ただ、この書き方はちょっと変です。抽象化とインターフェースを組み合わせましょう。

1. 抽象クラスとインターフェイスの組み合わせ

<?php 
/* 
写此程序源于自己的猜测,想在抽象类里实现某一接口。 
*/
interface work{ 
  public function say(); 
}
abstract class a implements work{ 
  public function showlove(){ 
    echo &#39;love you<br />&#39;; 
  } 
}
class b extends a{ 
  public function say(){ 
    echo &#39;hello, i m in b&#39;; 
  } 
}
$k=new b(); 
$k->say();
/* 
以上程序能正常执行
普通类implements接口后,就变成了抽象类了,这就好像是直接给抽象类增加了一个抽象方法。
*/
2. インターフェイスと継承の組み合わせ

親class は通常の Class ですが、サブクラスが継承した後、同時にインターフェースもサブクラスに実装されます。

質問: このアプローチは意味がありますか? 実際の開発にそのようなアプリケーションはありますか?

<?php
interface kk{ 
  public function say(); 
}
class a { 
  public function show(){ 
    echo &#39;我是父类<br />&#39;; 
  } 
}
class b extends a implements kk{ 
  public function say(){ 
    echo &#39;我是继承A类,同时实现say接口的<br />&#39;; 
  }
}
$b=new b(); 
$b->show();//我是父类
$b->say();//我是继承A类,同时实现say接口的

関連ビデオの推奨事項:

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

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

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