Dieser Artikel ist eine detaillierte Analyse und Einführung in den Unterschied zwischen Interface und Abstract Class in PHP. Freunde in Not können sich auf
Interface und Abstract Class beziehen Es ist wirklich schwer, sie zu unterscheiden. Die Methoden haben keine definierte Logik. Sie sind alle für Unterklassen gedacht, die sie erben müssen. Um die beiden zu unterscheiden, merken Sie sich einfach einen Satz: Schnittstelle ist die Spezifikation und Klasse ist die Implementierung. Der Zweck der Schnittstelle besteht darin, eine Spezifikation zu definieren, die jeder befolgt.
Mit anderen Worten: Schnittstellen und abstrakte Klassen können hinsichtlich ihres Zwecks klar voneinander unterschieden werden. Da es also eine Ausrede gibt, stellt sich immer noch die Frage, warum es immer noch eine abstrakte Klasse gibt.
Definieren Sie gemeinsam mit uns eine Klasse namens Animal, die zwei Teilmengen Dog und Cattle hat, die beide über zwei Methoden verfügen: run()-Methode und speak()-Methode.
Angenommen, der „Lauf“ von Dog und Cattle ist derselbe, also hat die run()-Methode die gleiche Geschäftslogik und das „speak“ ist unterschiedlich, also die Geschäftslogik der speak()-Methode Die Logik ist eine andere. Darüber hinaus gibt es eine IAnimal-Schnittstelle, die vorschreibt, dass diese beiden Methoden vorhanden sein müssen, was bedeutet, dass die Animal-Klasse diese beiden Methoden implementieren muss. Ebenso müssen die beiden Unterklassen Dog und Cattle ebenfalls über diese beiden Methoden verfügen, dann können wir sie wie folgt definieren dies:
Der Code lautet wie folgt:
<?php interface IAnimal{ public function run(); public function speak(); } class Animal implements IAnimal{ public function run(){ //在这里可以添加一些相同的run逻辑 return "same run<br />"; } public function speak(){ //这里可以添加一些相同的speak逻辑 return "same speak<br />"; } } class Dog extends Animal{ public function speak(){ //在这里可以添加一些Dog逻辑 return "Dog speak<br />"; } } class Cattle extends Animal{ public function speak(){ //在这里可以添加一些Cattle逻辑 return "Cattle speak<br />"; } } $oDog=new Dog(); echo($oDog->run()); echo($oDog->speak()); $oCattle=new Cattle(); echo($oCattle->run()); echo($oCattle->speak()); ?>
Das obige ist der detaillierte Inhalt vonCodebeispielanalyse: Was ist der Unterschied zwischen PHP-Schnittstelle und abstrakter Klasse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!