ホームページ >バックエンド開発 >PHPチュートリアル >PHP の抽象クラスとインターフェイスの違いと選択肢

PHP の抽象クラスとインターフェイスの違いと選択肢

不言
不言オリジナル
2018-04-08 15:12:381124ブラウズ

この記事では、PHP の抽象クラスとインターフェイスの違いと選択肢を紹介します。必要な方は参考にしてください。

違い: インターフェイスの使用はスルーです。キーワードは実装します。抽象クラスを使用するには、キーワード extends を使用します。もちろん、キーワード extends を使用してインターフェイスを継承することもできます。 2. メンバー変数(クラス静的変数を含む)はインターフェイス内で宣言できませんが、クラス定数は宣言できます。さまざまなタイプのメンバー変数を抽象クラスで宣言して、データのカプセル化を実装できます。

[php]

view plain
copy

<?php   
abstract class Father {  
    function meth1() {  
        echo "meth1...<br>";  
    }  
    abstract function meth2();  
    public $var1="var1";  
    public static $var2="var2";  
    const Var3="Var3";  
}  
class Son extends Father {  
    function meth2() {  
        echo "meth2 of Son...<br>";  
    }  
}  
$s=new Son();  
echo $s->var1."<br>";  
echo Father::$var2."<br>";  
echo Father::Var3."<br>";  
  
  
Interface IFather {  
    //public $iVar1="iVar1";        此处接口定义中不能包含成员变量  
    //public static $iVar2="iVar2"; 此处接口定义中不能包含静态变量  
    const iVar3="iVar3";  
    function iMeth1();  
}  
Class ISon implements IFather {  
    function iMeth1() {  
        echo "iMeth1...<br>";  
    }  
}  
$is=new ISon();  
echo IFather::iVar3;  
?>

3. インターフェイスにはコンストラクターがありませんが、抽象クラスにはコンストラクターがあります。


4. インターフェイスのメソッドはデフォルトでパブリック型ですが、抽象クラスのメソッドはプライベート、プロテクト、またはパブリックに変更できます。

5. クラスは同時に複数のインターフェースを実装できますが、クラスは 1 つの抽象クラスからのみ継承できます。

抽象クラスまたはインターフェイス。 (

主な違いは、抽象化は 1 つだけ継承できるのに対し、インターフェースは複数のものが継承できることです) 密接に関連するいくつかのモデルで採用されるモデルを作成したい場合オブジェクトの場合は、抽象クラスを使用できます。無関係な多数のオブジェクトに採用される機能を作成する場合は、インターフェイスを使用します。

  • 複数のソースから動作を継承する必要がある場合は、インターフェースを使用してください。

  • すべてのクラスが共通の動作実装を共有することがわかっている場合は、抽象クラスを使用し、その動作をその中で実装します。


主な違いは、抽象化は 1 つだけ継承できるのに対し、インターフェイスは複数で継承できることです
  • 関連推奨事項:

  • の概念と概念PHP の抽象クラスとインターフェイスの違い

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

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