Unterschied:
1. Die Nutzung der Schnittstelle erfolgt über das Schlüsselwort „implementiert“. Die Verwendung von abstract class erfolgt über das Schlüsselwort extends. Natürlich kann die Schnittstelle auch über das Schlüsselwortextends erben.
2. Mitgliedsvariablen (einschließlich statischer Klassenvariablen ) können nicht in der Schnittstelle deklariert werden, Klassenkonstanten können jedoch deklariert werden. In abstrakten Klassen können verschiedene Arten von Mitgliedsvariablen deklariert werden, um die Datenkapselung zu implementieren. (Zusätzlich müssen die Mitgliedsvariablen in der JAVA-Schnittstelle als öffentlicher statischer Endtyp deklariert werden)
<?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. Die Schnittstelle verfügt nicht über einen
-Konstruktor , und der Eine abstrakte Klasse kann einen Konstruktor haben.
Abstrakte Klasse oder Schnittstelle.
Verhalten aus mehreren Quellen erben müssen, verwenden Sie eine Schnittstelle.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Unterschiede zwischen abstrakten PHP-Klassen und -Schnittstellen und ausgewählten Instanzen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!