Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung des Unterschieds zwischen PHP-Abstract und Interface

Detaillierte Erklärung des Unterschieds zwischen PHP-Abstract und Interface

伊谢尔伦
伊谢尔伦Original
2017-07-03 10:08:071796Durchsuche

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, Sehen (Ansehen), dann Alle Unterklassen von , die erben, müssen 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 einfach darüber nach, wo Viele Leute arbeiten zusammen, wie nützlich es ist, eine Schnittstellenklasse zu haben. Es ist praktisch, sodass Sie andere nicht nach dem Methodennamen Ihrer bestimmten Funktion fragen müssen. Wenn Ihnen das gefällt, kann ich natürlich nicht helfen Es.

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:


 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);
     }
 }
Hier ist ein Beispiel, ich habe eine Store-Klasse definiert Alle Teile wie Kaufen, Verkaufen, Anzeigen und diese Methoden werden in der abstrakten Klasse implementiert. Anschließend erhält die Unterklasse, die sie erbt, automatisch diese Methoden, und die Unterklasse ist ihr eigenes, einzigartiges Etwas, das Codeduplizierung einführt und verbessert Wiederverwendbarkeit.


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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn