Inhaltsverzeichnis
final
statisch
abstract class abstract class
1. Abstrakte Klassen stellen Standards für die konkrete Implementierung bereit, während Schnittstellen reine Vorlagen sind. Schnittstellen definieren nur Funktionen und enthalten keinen Implementierungsinhalt. Schnittstellen werden mit dem Schlüsselwort interface deklariert.
1) Beides Es ist eine abstrakte Klasse und kann nicht instanziiert werden.
Heim Backend-Entwicklung PHP-Tutorial Der Unterschied zwischen statisch, endgültig, Schnittstelle und abstrakt in PHP

Der Unterschied zwischen statisch, endgültig, Schnittstelle und abstrakt in PHP

Jul 05, 2018 am 11:19 AM

Dieser Artikel stellt hauptsächlich die Unterschiede zwischen Static, Final, Interface und Abstract in PHP vor. Jetzt kann ich ihn mit Ihnen teilen

final

Wenn eine Methode in der übergeordneten Klasse als endgültig deklariert wird, kann die Unterklasse die Methode nicht überschreiben. Wenn eine Klasse als final deklariert ist, kann sie nicht vererbt werden.

Hinweis: Eigenschaften können nicht als endgültig definiert werden, nur Klassen und Methoden können als endgültig definiert werden.

statisch

Statische Variablen können lokale Variablen oder globale Variablen sein. Wenn ein Programmabschnitt ausgeführt wird, verschwindet die statische Variable nicht im Speicher und wird beim nächsten Mal definiert. Es ist immer noch der vorherige Wert. Er wird häufig verwendet, um den vorherigen Wert in Rekursionen oder Unterfunktionen beizubehalten. Dies wird auch im Singleton-Modus verwendet. Im Allgemeinen werden statische Attribute zum Speichern öffentlicher Klassendaten verwendet

2 Innerhalb statischer Methoden kann nur auf statische Eigenschaften zugegriffen werden, einschließlich derer dieser Klasse und der übergeordneten Klasse

3 ohne Objekte zu instanziieren

4. Verwenden Sie das Schlüsselwort self oder static, um auf statische Eigenschaften innerhalb dieser Klasse zuzugreifen. Die folgenden Variablen müssen $ enthalten, wie zum Beispiel: self::$a

5. Greifen Sie auf das übergeordnete Element zu. Verwenden Sie das übergeordnete Element für statische Klassenattribute, z. B.: parent::$name

6. Wenn Sie auf statische Variablen oder Methoden außerhalb der Klasse zugreifen, verwenden Sie den Klassennamen, um direkt ohne Instanziierung darauf zuzugreifen . Zum Beispiel: Me::$pan und Me::abc()

abstract

abstract class abstract class

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.

4. Wenn die Unterklasse eine abstrakte Methode implementiert, kann die Zugriffskontrolle der abstrakten Methode in der Unterklasse nicht strenger sein als die Zugriffskontrolle der abstrakten Methode in der übergeordneten Klasse, d. h. (A-Elternklasse, B-Unterklasse)

 (1) Wenn abstract_func() in A als öffentlich deklariert ist, kann die Deklaration von abstract_func() in B nur öffentlich, nicht geschützt oder privat sein

(2) Wenn abstract_func() in A als geschützt deklariert ist, dann kann B die Deklaration von abstract_func() in A öffentlich oder geschützt sein, aber nicht privat sein

 (3) Wenn abstract_func() in A als privat deklariert ist, kann es nicht als definiert werden Privat! (

Schwerwiegender Fehler

: Abstrakte Funktion A::abstract_func() kann nicht als privat deklariert werden)Schnittstelle

1. Abstrakte Klassen stellen Standards für die konkrete Implementierung bereit, während Schnittstellen reine Vorlagen sind. Schnittstellen definieren nur Funktionen und enthalten keinen Implementierungsinhalt. Schnittstellen werden mit dem Schlüsselwort interface deklariert.

2. Die Schnittstelle ist vollständig abstrakt. Sie kann nur Methoden und nur öffentliche Methoden deklarieren. Sie kann keine Methodenkörper definieren und keine Instanzvariablen deklarieren.

3. Die Schnittstelle kann 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 benötigen, können Sie es in die entsprechende abstrakte Klasse oder Klasse einfügen.

4. Jede Klasse, die eine Schnittstelle implementiert, muss alle in der Schnittstelle definierten Methoden implementieren, andernfalls muss die Klasse als abstrakt deklariert werden.

5. Eine Klasse kann eine Schnittstelle mithilfe des Schlüsselworts „implements“ in ihrer Deklaration implementieren. Danach entspricht der spezifische Prozess der Schnittstellenimplementierung dem Erben einer abstrakten Klasse, die nur abstrakte Methoden enthält.

6. Eine Klasse kann eine übergeordnete Klasse erben und beliebig viele Schnittstellen gleichzeitig implementieren. Die Extens-Klausel sollte vor der Implements-Klausel stehen. PHP unterstützt nur die Vererbung von einer übergeordneten Klasse, daher kann auf das Schlüsselwort „extens“ nur ein Klassenname folgen.

7. Eine Schnittstelle kann keine andere Schnittstelle implementieren, kann aber mehrere erben

3. Ähnlichkeiten und Unterschiede zwischen abstrakten Klassen und Schnittstellen

1) Beides Es ist eine abstrakte Klasse und kann nicht instanziiert werden.

 (2) Schnittstellenimplementierungsklassen und Unterklassen der abstrakten Klasse müssen die deklarierten abstrakten Methoden implementieren.

2. Unterschiede:

 (1) Die Schnittstelle muss mithilfe von „implements“ implementiert werden, und die abstrakte Klasse muss mithilfe von „extends“ geerbt werden.

 (2) Eine Klasse kann mehrere Schnittstellen implementieren, aber eine Klasse kann nur eine abstrakte Klasse erben.

 (3) Die Schnittstelle betont die Implementierung spezifischer Funktionen, während die abstrakte Klasse die Eigentumsbeziehung betont.

 (4) Obwohl sowohl Schnittstellenimplementierungsklassen als auch Unterklassen abstrakter Klassen entsprechende abstrakte Methoden implementieren müssen, sind die Implementierungsformen unterschiedlich. Jede Methode in der Schnittstelle ist eine abstrakte Methode, die nur deklariert wird (Deklaration, kein Methodenkörper) und von der Implementierungsklasse implementiert werden muss. Unterklassen einer abstrakten Klasse können selektiv implementiert werden.

Diese Auswahl hat zwei Bedeutungen:

a) Nicht alle Methoden in der abstrakten Klasse sind abstrakt. Nur die Methoden mit abstrakt sind abstrakt und Unterklassen müssen sie implementieren. Für diese Methoden ohne Zusammenfassung muss der Methodenkörper in der abstrakten Klasse definiert werden.

b) Wenn eine Unterklasse der abstrakten Klasse ihn erbt, kann sie nicht-abstrakte Methoden direkt erben oder überschreiben Sie können wählen, ob Sie es implementieren möchten, oder Sie können es seinen Unterklassen überlassen, aber diese Klasse muss auch als abstrakte Klasse deklariert werden. Da es sich um eine abstrakte Klasse handelt, kann sie natürlich nicht instanziiert werden.

 (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 einen Standardmethodenkörper für die Verwendung durch Unterklassen definieren es direkt oder überschreiben Sie es. Darüber hinaus kann es durch Vererbung eigene Instanzvariablen zur Verwendung durch Unterklassen definieren.

(6) Das Schlüsselwort abstract kann nicht hinzugefügt werden, bevor die abstrakte Methode in der Schnittstelle verwendet wird. Die implizite Standardmethode ist die abstrakte Methode, und das Schlüsselwort final 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) Es existiert als Bezeichner, der eine bestimmte Funktion realisieren 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 gebräuchlichsten sind:

(1) Definieren Sie eine Reihe von Schnittstellen, möchten Sie jedoch nicht jede Implementierungsklasse dazu 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 ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

PHP-Sortierung basierend auf Längen- und Breitengrad und Filterung von Entfernungssegmenten basierend auf Längen- und Breitengrad

Die Unterschied zwischen Define und Const in PHP

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen statisch, endgültig, Schnittstelle und abstrakt in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Apr 06, 2025 am 12:02 AM

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Apr 03, 2025 am 12:04 AM

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

Wie debugge ich den CLI -Modus in PhpStorm? Wie debugge ich den CLI -Modus in PhpStorm? Apr 01, 2025 pm 02:57 PM

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Mar 31, 2025 pm 11:54 PM

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Apr 01, 2025 pm 03:12 PM

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...

See all articles