Heim  >  Artikel  >  Backend-Entwicklung  >  Codebeispielanalyse: Was ist der Unterschied zwischen PHP-Schnittstelle und abstrakter Klasse?

Codebeispielanalyse: Was ist der Unterschied zwischen PHP-Schnittstelle und abstrakter Klasse?

伊谢尔伦
伊谢尔伦Original
2017-07-03 09:31:281147Durchsuche

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!

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