Heim > Artikel > Backend-Entwicklung > Was ist der Unterschied zwischen einer abstrakten PHP-Klasse und einer Schnittstelle?
Unterschiede: 1. Das Schlüsselwort für Schnittstellen lautet „implementiert“ und für abstrakte Klassen „extends“. 2. Schnittstellen können keine Mitgliedsvariablen deklarieren, abstrakte Klassen jedoch schon. 4. Schnittstellenmethoden schon 5. Eine Klasse kann mehrere Schnittstellen gleichzeitig implementieren und nur von einer abstrakten Klasse erben.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 7.1, DELL G3-Computer
Unterschiede:
1. Die Verwendung der Schnittstelle erfolgt über das Schlüsselwort „implementiert“. 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. (Außerdem 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 hat keinen Konstruktor, aber die abstrakte Klasse kann einen Konstruktor haben.
4. Methoden in Schnittstellen sind standardmäßig vom öffentlichen Typ, während Methoden in abstrakten Klassen durch private, geschützte oder öffentliche Methoden 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.
Empfohlenes Lernen: „PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen einer abstrakten PHP-Klasse und einer Schnittstelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!