Lassen Sie uns über die Unterschiede zwischen den Schnittstellenmethoden von PHP-Klassen sprechen

PHPz
Freigeben: 2023-04-24 17:00:09
Original
679 Leute haben es durchsucht

PHP ist eine beliebte Programmiersprache in der objektorientierten Programmierung. Schnittstelle ist ein gängiges Konzept. Eine Schnittstelle in PHP bedeutet, dass eine Klasse eine Reihe von Methoden definiert, aber keine Implementierung bereitstellt. Stattdessen werden diese Methoden von der Klasse implementiert, die die Schnittstelle implementiert. Schnittstellen spielen die Rolle der Standardisierung und Einschränkung von Implementierungsklassen und weisen eine große Flexibilität und Skalierbarkeit auf. Die PHP-Schnittstelle ist in zwei Typen unterteilt: abstrakte Klassenschnittstelle und reguläre Schnittstelle. In diesem Artikel konzentrieren wir uns auf die Unterschiede zwischen den Schnittstellenmethoden von PHP-Klassen.

1. Abstrakte Klassenschnittstelle

  1. Abstrakte Klassen können nicht instanziiert werden und können nur vererbt werden. Ihre Hauptfunktion besteht darin, eine Grundstruktur für andere Klassen bereitzustellen. Details werden in Unterklassen implementiert. Methoden in abstrakten Klassen sind optional und einige können als abstrakte Methoden definiert werden (d. h. Methoden mit nur Methodennamen, aber ohne Methodenkörper). Eine abstrakte Klasse muss mindestens eine abstrakte Methode enthalten, andernfalls werden alle Methoden unter ihrer Deklaration berücksichtigt gängige Methode.
Beispiel:

abstract class Animal{
   abstract function eat();
   function sleep(){
      echo "晚安,好梦!";
   }
}
Nach dem Login kopieren

Vererbung und Implementierung abstrakter Klassen

  1. Da abstrakte Klassen nicht instanziiert werden können, können sie nur über Unterklassen implementiert werden, andernfalls muss die Unterklasse alle in der abstrakten Klasse definierten abstrakten Methoden implementieren Muss als abstrakte Klasse definiert werden.
Beispiel:

class Cat extends Animal{
   function eat(){
      echo "吃小鱼干!";
   }
}
Nach dem Login kopieren
Im obigen Code definieren wir eine Cat-Klasse, um die Animal-Klasse zu erben, und gleichzeitig in der Cat code>-Klasse Die Methode <code>eat() ist implementiert, sodass wir über die Klasse Cat auf die spezifischen Implementierungsmethoden in dieser abstrakten Klasse zugreifen können.

Vorteile abstrakter KlassenCat类去继承Animal类,同时在Cat类中实现了eat()方法,这样我们就可以通过Cat类来访问这个抽象类中的具体实现方法。

  1. 抽象类的优点
  • 抽象类可以提供提供一定的代码复用;
  • 抽象类可以隔离出系统的底层实现细节,从而降低了模块之间的耦合度;
  • 抽象类可以提供一致性接口,使得子类在实现具体的功能时,规范化了实现过程。

二、常规接口

常规的接口是PHP中的另一种形式的接口。常规接口可以有方法和常量,在接口中定义的所有方法都必须由任何类去实现,否则就会产生致命的错误。通过实现某个接口的类来使该类可以访问接口中的定义的方法和常量。

  1. 常规接口定义

在PHP中,我们可以定义一个常规接口,并在其中指定需要实现的方法:

interface IAnimal{
   public function eat();
   public function run();
}
Nach dem Login kopieren

在这个代码片段中,我们定义了一个IAnimal接口,并在其中指定了需要实现的两个方法——eat()run()

  1. 常规接口的实现

在实现常规接口时,实现一个接口时必须实现其中定义的所有方法,否则就会产生编译错误。

示例:

class Dog implements IAnimal{
   function eat(){
      echo "吃骨头!";
   }
   function run(){
      echo "追皮球!";
   }
}
Nach dem Login kopieren

在上面的代码片段中,我们定义了一个Dog类,实现了IAnimal接口,并在其中实现了接口中定义的两个方法——eat()run()

  1. Abstrakte Klassen können ein gewisses Maß an Code-Wiederverwendung ermöglichen;
Abstrakte Klassen können die zugrunde liegenden Implementierungsdetails des Systems isolieren und dadurch die Kopplung zwischen Modulen reduzieren; Eine konsistente Schnittstelle ermöglicht es Unterklassen, den Implementierungsprozess bei der Implementierung bestimmter Funktionen zu standardisieren.
  • 2. Konventionelle Schnittstelle
  • Die konventionelle Schnittstelle ist eine andere Form der Schnittstelle in PHP. Reguläre Schnittstellen können Methoden und Konstanten haben, die von jeder Klasse implementiert werden müssen, andernfalls tritt ein schwerwiegender Fehler auf. Durch die Implementierung einer Klasse einer Schnittstelle kann die Klasse auf die in der Schnittstelle definierten Methoden und Konstanten zugreifen.
Allgemeine Schnittstellendefinition

    In PHP können wir eine reguläre Schnittstelle definieren und die Methoden angeben, die implementiert werden müssen:
  1. rrreee
  2. In diesem Codeausschnitt definieren wir eine IAnimal-Schnittstelle und gibt zwei Methoden an, die implementiert werden müssen – eat() und run().

Implementierung regulärer Schnittstellen

    Bei der Implementierung einer regulären Schnittstelle müssen Sie bei der Implementierung einer Schnittstelle alle darin definierten Methoden implementieren, da sonst ein Kompilierungsfehler auftritt.
  1. Beispiel:
rrreee

Im obigen Codeausschnitt definieren wir eine Dog-Klasse, implementieren die IAnimal-Schnittstelle und implementieren die beiden in der Schnittstelle definierten Methoden – eat() und run().

Vorteile regulärer Schnittstellen

  1. Konventionelle Schnittstellen können die Wiederverwendbarkeit von Code verbessern;
Konventionelle Schnittstellen können die Kopplung zwischen Codes verringern und die Wartbarkeit des Codes erhöhen;

Konventionelle Schnittstellen können von mehreren Klassen implementiert und bereitgestellt werden Schnittstelle, um die Skalierbarkeit des Codes zu erhöhen.

3. Der Unterschied zwischen abstrakter Klassenschnittstelle und konventioneller Schnittstelle

Definition und Verwendung 🎜🎜🎜Die Art und Weise, wie abstrakte Klassenschnittstellen und konventionelle Schnittstellen definiert und implementiert werden, ist zwar unterschiedlich Schnittstellen werden direkt definiert und implementiert. 🎜🎜Abstrakte Klassenschnittstellen werden durch Vererbung implementiert, während reguläre Schnittstellen durch die Implementierung aller in der Schnittstelle definierten Methoden implementiert werden. 🎜🎜🎜Der Unterschied zwischen abstrakten Klassen und regulären Klassen🎜🎜🎜Abstrakte Klassen können gewöhnliche Methoden und abstrakte Methoden haben, während reguläre Schnittstellen nur abstrakte Methoden definieren können; 🎜🎜Abstrakte Klassen müssen durch Vererbung implementiert werden, während reguläre Schnittstellen durch implementiert werden können Implementierung mehrerer Klassen; 🎜🎜Abstrakte Methoden abstrakter Klassen müssen durch Unterklassen implementiert werden, und jede Klasse, die eine reguläre Schnittstelle implementiert, muss alle Methoden in der Schnittstelle in derselben Form implementieren. 🎜🎜🎜Unterschiede in der Design-Semantik🎜🎜🎜Abstrakte Klassenschnittstellen werden hauptsächlich verwendet, um einige allgemeine Verhaltensweisen oder Methoden zur Datenstrukturorganisation im Sprachdesign bereitzustellen. Es kann eine Vererbungsbeziehung oder eine Kombinationsbeziehung zwischen einer abstrakten Klasse und ihren Unterklassen bestehen. 🎜🎜Konventionelle Schnittstellen werden hauptsächlich verwendet, um die Kommunikationsprotokolle zwischen Objekten im Sprachdesign einzuschränken. Reguläre Schnittstellen definieren einige öffentliche Spezifikationen und Methoden, die von mehreren Klassen implementiert werden. 🎜🎜Fazit🎜🎜Ob es sich um eine abstrakte Klassenschnittstelle oder eine reguläre Schnittstelle handelt, es handelt sich um sehr wichtige Konzepte in PHP. Die abstrakte Klassenschnittstelle kann eine flexible Vererbungsstruktur bereitstellen und die Standardimplementierung von Methoden unterstützen. Es wird empfohlen, dass die Methoden in der abstrakten Klasse gemeinsame Methoden aller Klassen sind, während die herkömmliche Schnittstelle die Methodennamen der Klasse standardisiert dass die Methoden in der Schnittstelle klassenspezifisch sind. Daher sollten wir bei der Durchführung konkreter praktischer Anwendungen je nach konkretem Nutzungsszenario unterschiedliche Schnittstellentypen wählen. 🎜

Das obige ist der detaillierte Inhalt vonLassen Sie uns über die Unterschiede zwischen den Schnittstellenmethoden von PHP-Klassen sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage