Dieser Artikel ist eine detaillierte Analyse und Einführung in den Unterschied zwischen Abstract und Interface in PHP. Freunde, die ihn benötigen, können ihn lesen. Ich hoffe, er wird für alle hilfreich sein.
1 .php SchnittstelleKlasse: Schnittstelle
Wenn viele Leute gemeinsam ein Projekt entwickeln, rufen sie möglicherweise alle einige Klassen auf, die von anderen geschrieben wurden, dann von Ihnen Ich werde fragen: Woher weiß ich, wie ich die Implementierungsmethode einer bestimmten Funktion benennen soll? Zu diesem Zeitpunkt kommt die PHP-Schnittstellenklasse ins Spiel. Wenn wir eine Schnittstellenklasse definieren, müssen die darin enthaltenen Methoden von den folgenden Unterklassen implementiert werden Beispiel:
Der Code lautet wie folgt:
interface Shop { public function buy($gid); public function sell($gid); public function view($gid); }
Ich deklariere eine Shop-Schnittstellenklasse und definiere drei Methoden: Kaufen, Verkaufen und Anzeigen, dann alle Unterklassen, die erben von muss eine dieser drei Methoden implementieren. Wenn die Unterklasse diese nicht implementiert, funktioniert sie nicht. Tatsächlich ist die Schnittstellenklasse, um es ganz klar auszudrücken, die Vorlage einer Klasse und die Vorschriften einer Klasse. Wenn Sie zu dieser Kategorie gehören, müssen Sie meine Vorschriften befolgen, egal wie Sie es tun Wie Sie es machen. Das liegt an Ihnen. Dinge wie:
Der Code lautet wie folgt:
class BaseShop implements Shop { public function buy($gid) { echo('你购买了ID为 :'.$gid.'的商品'); } public function sell($gid) { echo('你卖了ID为 :'.$gid.'的商品'); } public function view($gid) { echo('你查看了ID为 :'.$gid.'的商品'); } }
Denken Sie darüber nach, in einem großen Projekt, bei dem viele Leute zusammenarbeiten, Es ist so praktisch, Schnittstellenklassen wie diese zu haben. Sie müssen andere nicht nach dem Methodennamen Ihrer bestimmten Funktion fragen. Wenn Ihnen das gefällt, kann ich natürlich nichts dagegen tun.
Schlussfolgerung: Die Schnittstellenklasse ist der Anführer einer Klasse und gibt die Richtung an, und die Unterklasse muss ihre angegebene Methode abschließen.
2.php Abstrakte Klasse: abstrakt
Tatsächlich sind abstrakte Klassen und Schnittstellenklassen teilweise ähnlich Das? In einem Satz extrahiert die abstrakte Klasse den Teil des Klassenbildes, aber tatsächlich sagt sie die Wahrheit der abstrakten Klasse aus, wenn Sie feststellen, dass viele Ihrer Klassen viele Methoden verwenden Wenn Sie sie weiterhin verwenden, können Sie die Verwendung abstrakter Klassen in Betracht ziehen. Sie können sagen: „Kann ich keine Klasse neu schreiben? Für jede öffentliche Klasse instanziiere ich diese öffentliche Klasse.“ Rufen Sie dieselbe Methode auf 🎜> Diese Methode. Zum Beispiel: Der Code lautet wie folgt:
Hier ist ein Beispiel. Wie oben habe ich eine Store-Klasse definiert und alle ihre Teile extrahiert, z. B. buy (kaufen), Wenn diese Methoden in der abstrakten Klasse „sell“ (verkaufen) und „view“ implementiert sind, erhält die Unterklasse, die sie erbt, automatisch diese Methoden, und die Unterklasse führt ihre eigenen einzigartigen Aufgaben aus, führt Codeduplizierung ein und verbessert die Wiederverwendbarkeit.abstract class BaseShop { public function buy($gid) { echo('你购买了ID为 :'.$gid.'的商品'); } public function sell($gid) { echo('你卖了ID为 :'.$gid.'的商品'); } public function view($gid) { echo('你查看了ID为 :'.$gid.'的商品'); } } class BallShop extends BaseShop { var $itme_id = null; public function construct() { $this->itme_id = 2314; } public function open() { $this->sell($this->itme_id); } }
Fazit: Eine abstrakte Klasse ist ein Dienstanbieter einer Klasse. Sie müssen sie nicht verwenden Sie brauchen sie. Wenn Sie unzufrieden sind, wenn die Dienstleistung nicht erbracht wird, können Sie sie trotzdem selbst erledigen. Die abstrakte Funktionsmethode ähnelt in gewisser Weise der Schnittstelle. Sie ist eine in der übergeordneten Klasse deklarierte Methode. Methoden, die nicht mit abstrakt deklariert sind, müssen jedoch nicht implementiert werden in der Unterklasse
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Unterschieds zwischen PHP-Abstract und Interface. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!