Dieser Artikel stellt die Unterschiede und Auswahlmöglichkeiten abstrakter Klassen und Schnittstellen in PHP vor. Jetzt können Freunde in Not darauf verweisen
Unterschiede:
1 Die Schnittstelle wird über das Schlüsselwort „implementiert“ verwendet. Die Verwendung abstrakter Klassen erfolgt über das Schlüsselwort „extends“. Natürlich können Schnittstellen auch über das Schlüsselwort „extends“ vererbt werden.
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.
[php]einfach anzeigenkopieren
<?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. Schnittstellen haben keine Konstruktoren, aber abstrakte Klassen können Konstruktoren haben.
4. Methoden in Schnittstellen sind standardmäßig vom öffentlichen Typ, während Methoden in abstrakten Klassen mit privat, geschützt und öffentlich geändert werden können.
5. Eine Klasse kann mehrere Schnittstellen gleichzeitig implementieren, aber eine Klasse kann nur von einer abstrakten Klasse erben.
Abstrakte Klasse oder Schnittstelle. (Der Hauptunterschied besteht darin, dass die Abstraktion nur von einem geerbt werden kann, während die Schnittstelle von mehreren geerbt werden kann )
Wenn Sie ein Modell erstellen möchten, das von einigen eng verwandten Objekten übernommen wird, können Sie abstrakte Klassen verwenden. Verwenden Sie Schnittstellen, wenn Sie Funktionen erstellen möchten, die von einer Reihe unabhängiger Objekte übernommen werden.
Verwenden Sie Schnittstellen, wenn das Verhalten aus mehreren Quellen geerbt werden muss.
Wenn Sie wissen, dass alle Klassen eine gemeinsame Verhaltensimplementierung haben, verwenden Sie eine abstrakte Klasse und implementieren Sie dieses Verhalten darin.
Der Hauptunterschied besteht darin, dass die Abstraktion nur eine Vererbung haben kann , während Schnittstelle Schnittstellen aus mehreren Quellen geerbt werden können
Verwandte Empfehlungen:
Konzepte und Unterschiede zwischen abstrakten PHP-Klassen und -Schnittstellen
Das obige ist der detaillierte Inhalt vonUnterschiede und Auswahlmöglichkeiten abstrakter Klassen und Schnittstellen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!