Heim >Backend-Entwicklung >PHP-Problem >Was ist der Unterschied zwischen abstrakter Klasse und Schnittstelle in PHP?
Unterschiede: 1. Abstrakte Klassen können Attribute, gewöhnliche Methoden und abstrakte Methoden haben, aber Schnittstellen können keine Attribute und gewöhnlichen Methoden haben und können Konstanten haben. 2. Abstrakte Klassen werden vor der Klasse mit dem Schlüsselwort abstract deklariert, und die Klasse ist es Als Klasse deklariert: Die Schnittstelle wird mit Schnittstelle deklariert, kann jedoch nicht mit Klasse deklariert werden, da die Schnittstelle keine Klasse ist.
Empfohlen: „PHP-Video-Tutorial“
Für die objektorientierte Entwicklung sind abstrakte Klassen und Schnittstellen relativ schwer zu verstehen. Der folgende Artikel stellt Ihnen den Unterschied zwischen abstrakten Klassen und Schnittstellen in PHP vor. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.
Abstrakte Klasse: Sie basiert auf einer Klasse. Sie ist lediglich eine spezielle Klasse, die nicht direkt in der Klasse definiert werden kann. Ähnlich wie Vorlagen können Unterklassen nach der Spezifikation detaillierte Funktionen implementieren.
Schnittstelle: Basiert hauptsächlich auf Methodenspezifikationen, ein bisschen wie abstrakte Methoden in abstrakten Klassen, mit der Ausnahme, dass sie unabhängiger sind als abstrakte Methoden. Eine Klasse kann durch Kombination mehrerer Methoden zu einer neuen Klasse zusammengefasst werden.
Der Unterschied zwischen abstrakten Klassen und Schnittstellen in PHP
1 Abstrakte Klassen können Attribute, gewöhnliche Methoden und abstrakte Methoden haben, aber Schnittstellen können keine Attribute und gewöhnlichen Methoden haben und können Konstanten haben
2 In einer abstrakten Klasse müssen Methoden vorhanden sein, es müssen jedoch „abstrakte“ Methoden vorhanden sein
3. Die Syntax ist unterschiedlich Eine Klasse, und die Schnittstelle wird mit Schnittstelle deklariert, kann jedoch nicht mit Klasse deklariert werden, da die Schnittstelle keine Klasse ist.
5. Die abstrakten Methoden abstrakter Klassen müssen mit abstract deklariert werden, Schnittstellen müssen jedoch nicht deklariert werden
6. Abstrakte Klassen verwenden das Schlüsselwort „extends“, um der Unterklasse zu ermöglichen, die übergeordnete Klasse zu erben und dann detaillierte abstrakte Methoden zu implementieren in der Unterklasse. Die Schnittstelle verwendet Implementierungen, um es gewöhnlichen Klassen zu ermöglichen, detaillierte Methoden der Schnittstelle in der Klasse zu implementieren, und die Schnittstelle kann mehrere Methoden gleichzeitig implementieren. Verwenden Sie einfach Kommas, um jede Schnittstelle zu trennen.
Abstrakte Klasse:
abstract class ShopProductWriter { protected $product = []; /** * 抽象类中可以定义普通方法 */ public function addProduct($shopProduct) { $this->product = $shopProduct; } /** * 定义一个抽象方法,只有方法声明,没有方法实现 */ abstract public function write(); }
class XmlProductWriter extends ShopProductWriter { /** * 任何继承自抽象类的类都必须实现所有的抽象方法 */ public function write() { echo 'XmlProductWriter'; } }
interface Price { /** * 只有方法声明,没有方法实现 */ public function getPrice(); }
class ShopProduct implements Price { protected $price; public function getPrice() { // TODO: Implement getPrice() method. return $this->price; } }
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen abstrakter Klasse und Schnittstelle in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!