PHP の抽象クラスとインターフェイス、および選択されたインスタンスの違いの詳細な説明

伊谢尔伦
リリース: 2023-03-12 12:40:02
オリジナル
1525 人が閲覧しました

の違い:

1. インターフェースの使用はキーワードimplementsを介して行われます。 抽象クラスの使用は、キーワードextendsを介して行われます。もちろん、キーワード extends を使用してインターフェースを継承することもできます。

2. メンバー変数 (クラスstatic変数を含む) はインターフェース内で宣言できませんが、クラス定数は宣言できます。さまざまなタイプのメンバー変数を抽象クラスで宣言して、データのカプセル化を実装できます。 (さらに、JAVA インターフェースのメンバー変数は public static Final 型として宣言する必要があります)

<?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 つの抽象クラスからのみ継承できます。

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

  • 密接に関連するオブジェクトによって採用されるモデルを作成したい場合は、抽象クラスを使用できます。無関係な多数のオブジェクトに採用される機能を作成する場合は、インターフェイスを使用します。

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

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

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

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