Heim > Artikel > Backend-Entwicklung > Abstrakte Klasse und Schnittstelle in PHP
1. Abstrakter Unterricht
1. Eine abstrakte Klasse bezieht sich auf eine Klasse, bei der das Schlüsselwort „abstrakt“ vor der Klasse hinzugefügt wird, und auf eine abstrakte Methode (das Schlüsselwort „abstrakt“, das vor dem Funktionsschlüsselwort „Klassenmethode“ hinzugefügt wird).
2. Abstrakte Klassen können nicht direkt instanziiert werden. Die abstrakte Klasse definiert (oder implementiert) nur die von der Unterklasse benötigten Methoden. Unterklassen können eine abstrakte Klasse konkretisieren, indem sie sie erben und alle abstrakten Methoden in der abstrakten Klasse implementieren.
3. Wenn eine Unterklasse instanziiert werden muss, muss sie alle abstrakten Methoden in der abstrakten Klasse implementieren. Wenn die Unterklasse nicht alle abstrakten Methoden in der abstrakten Klasse implementiert, ist die Unterklasse ebenfalls eine abstrakte Klasse und muss in der Klasse durch das Schlüsselwort abstract vorangestellt werden und kann nicht instanziiert werden.
[c-sharp] view plaincopyprint?
Schnittstelle
konstante Variablen deklarieren. Das Platzieren konstanter Variablen in einer Schnittstelle verstößt jedoch gegen den Zweck ihrer Existenz als Schnittstelle und bringt außerdem die unterschiedlichen Werte von Schnittstellen und Klassen durcheinander. Wenn Sie es wirklich brauchen, können Sie es in die entsprechende Zusammenfassung einfügen Klasse oder Klasse in. [php] view plaincopyprint?
Schnittstelle iAimplementiert
iA{
Klasse
Eimplementiert
iA{}
(5) Die abstrakte Klasse ist der Vermittler zwischen Schnittstelle und Klasse. Die abstrakte Klasse spielt eine verbindende Rolle zwischen Schnittstelle und Klasse. Einerseits ist eine abstrakte Klasse abstrakt und kann abstrakte Methoden deklarieren, um die Funktionen zu standardisieren, die Unterklassen implementieren müssen. Andererseits kann sie Standardmethodenkörper für die direkte Verwendung oder Überschreibung durch Unterklassen definieren. Darüber hinaus kann es durch Vererbung eigene Instanzvariablen zur Verwendung durch Unterklassen definieren.
(6) Das abstrakte Schlüsselwort kann nicht vor der abstrakten Methode in der Schnittstelle hinzugefügt werden. Die abstrakte Methode ist standardmäßig implizit und das letzte Schlüsselwort kann nicht hinzugefügt werden, um die Vererbung abstrakter Methoden zu verhindern. In einer abstrakten Klasse muss „abstract“ vor der abstrakten Methode hinzugefügt werden, um anzuzeigen, dass sie explizit als abstrakte Methode deklariert ist.
(7) Abstrakte Methoden in Schnittstellen sind standardmäßig öffentlich und können nur öffentlich sein. Sie können nicht mit privaten oder geschützten Modifikatoren geändert werden. Abstrakte Methoden in abstrakten Klassen können mit public und protected geändert werden, jedoch nicht mit private.
3. Anwendungsfälle der Schnittstelle
(1) Klassen benötigen spezifische Schnittstellen zur Koordination, unabhängig davon, wie sie implementiert werden.
(2) existiert als Bezeichner, der eine bestimmte Funktion implementieren kann, oder es kann ein reiner Bezeichner ohne Schnittstellenmethoden sein.
(3) Es ist notwendig, eine Klassengruppe als eine einzelne Klasse zu behandeln, und der Anrufer kontaktiert diese Klassengruppe nur über die Schnittstelle.
(4) Es ist notwendig, mehrere spezifische Funktionen zu implementieren, und diese Funktionen haben möglicherweise überhaupt keine Verbindung.
4. Anwendungsfälle der abstrakten Klasse
Kurz gesagt, Sie können sie verwenden, wenn Sie sowohl eine einheitliche Schnittstelle als auch Instanzvariablen oder Standardmethoden benötigen. Die häufigsten sind:
(1) Definiert eine Reihe von Schnittstellen, möchte aber nicht jede Implementierungsklasse zwingen, alle Schnittstellen zu implementieren. Sie können eine abstrakte Klasse verwenden, um eine Reihe von Methodenkörpern oder sogar leere Methodenkörper zu definieren, und dann Unterklassen die Methoden auswählen lassen, die sie abdecken möchten.
(2) In einigen Fällen können reine Schnittstellen allein die Koordination zwischen Klassen nicht erfüllen. Zur Unterscheidung verschiedener Beziehungen werden auch Variablen benötigt, die Zustände in der Klasse darstellen. Die Vermittlerrolle des Abstrakten kann dies sehr gut erfüllen.
(3) Standardisiert eine Reihe gegenseitig koordinierter Methoden, von denen einige gemeinsam und zustandsunabhängig sind und gemeinsam genutzt werden können, ohne dass Unterklassen sie separat implementieren müssen, während andere Methoden erfordern, dass jede Unterklasse sie implementiert nach eigenem spezifischen Zustand, um bestimmte Funktionen zu erreichen.
Das Obige hat die abstrakte Klasse (abstrakte Klasse) und die Schnittstelle (Schnittstelle) in PHP vorgestellt, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.