Abstrakte Klasse vs. Schnittstelle in PHP
Dieses Tutorial demonstriert den Unterschied zwischen abstract class und interface in PHP.
Bevor wir auf die Unterschiede eingehen, müssen wir zunächst die Konzepte abstrakte Klasse und Schnittstelle verstehen. Hier sind die wichtigen Punkte sowohl für abstrakte Klasse als auch für Schnittstelle.
Abstrakte Klasse in PHP
Die abstrakte Klasse wird teilweise von Entwicklern implementiert und enthält mindestens eine abstrakte Methode, eine Methode ohne jeglichen Code. Hier sind einige wichtige Punkte zum Verständnis der abstrakten Klasse.
- Die
abstrakte Klassesteht unter partieller Abstraktion. - Wir können Variablen in der
abstrakten Klasseerstellen. - Abstrakte Klassen können abstrakte und nicht abstrakte Methoden enthalten.
- Wir können jeden Zugriffsmodifikator in der
abstrakten Klasseverwenden. - Mit dem Schlüsselwort
extendskönnen wir auf dieabstract class-Features der abgeleiteten Klasse zugreifen. - In der
abstrakten Klassesind Mehrfachvererbungen möglich.
Hier ist ein Beispiel, wie man eine abstrakte Klasse erstellt.
<?php
abstract class Demo_Abstract_Class {
abstract protected
function Get_Value();
public
function Print_Value() {
print $this -> Get_Value();
}
}
?>
Schnittstelle in PHP
Die Schnittstelle wird durch das Schlüsselwort interface definiert, wobei alle Methoden abstrakt sind. Hier sind einige wichtige Punkte, um die Schnittstelle zu verstehen.
- Die Schnittstelle ist vollständig abstrahiert.
- Wir können keine Variablen in der
Schnittstelleerstellen. - Das
interfaceenthält nur abstrakte Methoden. - In der
Schnittstellewird nur der Zugriffsmodifikatorpublicverwendet. - Wir können das
interfacevon einer abgeleiteten Klasse mit dem Schlüsselwortimplementerhalten. - Bei
Schnittstellensind Mehrfachvererbungen möglich.
Hier ist ein Beispiel, um die Schnittstelle zu demonstrieren.
<?php
interface Demo_Interface {
public
function execute();
}
?>
Abstrakte Klasse vs. Schnittstelle in PHP
Hier sind die Unterschiede zwischen abstrakter Klasse und Schnittstelle.
| Abstrakte Klasse | Schnittstelle |
|---|---|
| Keine Mehrfachvererbung. | Unterstützt Mehrfachvererbung. |
Die abstrakte Klasse enthält ein Datenelement. |
Die Schnittstelle enthält kein Datenelement. |
Die abstrakte Klasse unterstützt die Container. |
Die Schnittstelle unterstützt die Container nicht. |
Die abstrakte Klasse enthält vollständige und unvollständige Mitglieder. |
Die Schnittstelle enthält nur die vollständigen Mitglieder, was sich auch auf die Signatur des Mitglieds bezieht. |
Die abstrakte Klasse kann Zugriffsmodifikatoren mit Subs, Eigenschaften und Funktionen haben. |
In der Schnittstelle gilt alles als öffentlich, weshalb es keine Zugriffsmodifikatoren hat. |
Die vollständigen Mitglieder der abstrakten Klasse können statisch sein, während die unvollständigen Mitglieder nicht statisch sein können. |
Kein Mitglied der Schnittstelle darf statisch sein. |
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook