


Die tatsächliche Rolle von PHP-Schnittstellenklassen und abstrakten Klassen
1.php-Schnittstellenklasse: Schnittstelle
Tatsächlich ist ihre Rolle sehr einfach. Wenn viele Leute gemeinsam ein Projekt entwickeln, werden sie möglicherweise alle einige von anderen geschriebene Klassen aufrufen ? Wie benenne ich die Implementierungsmethode einer bestimmten Funktion? Wenn wir eine Schnittstellenklasse definieren, müssen die darin enthaltenen Methoden implementiert werden, z. B.:
Kopieren Sie den Code wie folgt:
interface Shop
{
public function buy($gid);
public function sale($gid) ;
}
Klasse BaseShop implementiert Shop
{
öffentliche Funktion buy($gid)
{
echo('Sie haben das Produkt mit der ID gekauft: '.$gid.');
}
public function sale($gid)
{
echo('Sie haben verkauft das Produkt mit der ID: „.$gid.“ .');
}
}
Denken Sie darüber nach: In einem großen Projekt, in dem viele Leute zusammenarbeiten, ist es sehr praktisch, eine Schnittstellenklasse zu haben, sodass Sie dies nicht tun müssen Fragen Sie andere, wie lautet der Methodenname Ihrer bestimmten Funktion? Wenn Ihnen das gefällt, kann ich natürlich nicht anders.
Schlussfolgerung: Die Schnittstellenklasse ist der Anführer einer Klasse und gibt die Richtung an, und die Unterklasse muss ihre angegebene Methode abschließen.
2.php Abstrakte Klasse: abstrakt
Tatsächlich sind abstrakte Klassen und Schnittstellenklassen teilweise ähnlich. Abstrakte Klassen haben ähnliche Teile entfernt. Tatsächlich sieht es sehr lustig aus sagt die Wahrheit über abstrakte Klassen: Wenn Sie feststellen, dass viele Ihrer Klassen viele Methoden verwenden, die Sie ständig schreiben, können Sie die Verwendung abstrakter Klassen in Betracht ziehen Ist es möglich, eine Klasse neu zu schreiben und für jede öffentliche Klasse eine öffentliche Klasse zu instanziieren und dieselbe Methode aufzurufen? Die Transformation macht es so bequem wie den direkten Aufruf der Methode dieser Klasse, und Sie können diese Methode auch überladen. Zum Beispiel:
Kopieren Sie den Code wie folgt:
abstract class BaseShop
{
public function buy($gid)
echo('Die von Ihnen gekaufte ID ist :' .$gid.'product');
}
public function sale($gid)
{
echo('Sie haben das Produkt mit der ID verkauft: '.$gid.') ;
}
public function view($gid)
{
echo('Sie haben das Produkt mit der ID angezeigt: '.$gid.');
}
Klasse BallShop erweitert BaseShop
{
var $itme_id = null;
public function __construct()
{
$this->itme_id = 2314;
public function open()
{
$this->sell($this->itme_id);
}
}
Hier ist ein Beispiel, ich denke genauso wie oben Definieren Sie eine Geschäftsklasse, extrahieren Sie alle ihre Teile, kaufen, verkaufen und anzeigen und implementieren Sie diese Methoden in der abstrakten Klasse. Anschließend erhalten die Unterklassen, die sie erben, diese Methoden automatisch. Mit diesen Methoden führt die Unterklasse ihre eigene einzigartige Sache aus die Duplizierung von Code und verbessert die Wiederverwendbarkeit.
Fazit: Eine abstrakte Klasse ist ein Dienstanbieter einer Klasse. Sie müssen sie nicht nutzen, wenn Sie mit der Bereitstellung von Diensten unzufrieden sind selbst.
Haha, das sind meine bescheidenen Meinungen zu PHP-Schnittstellenklassen und abstrakten Klassen. Ich hoffe, dass sie denjenigen helfen können, die über diese beiden verwirrt sind. Wenn Sie Kommentare haben, hinterlassen Sie bitte eine Nachricht Achtung auf die chinesische PHP-Website (www.php.cn)!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Golang hat keine abstrakten Klassen. Golang ist keine objektorientierte (OOP) Sprache. Es gibt keine Konzepte für Klassen, Vererbung und abstrakte Klassen. Es gibt jedoch Strukturen (Strukturen) und Schnittstellen (Schnittstellen), die indirekt durch die Kombination von implementiert werden können Struktur und Schnittstelle. Abstrakte Klassen in Objektsprachen.

Schnittstellen und abstrakte Klassen werden in Entwurfsmustern zur Entkopplung und Erweiterbarkeit verwendet. Schnittstellen definieren Methodensignaturen, abstrakte Klassen stellen eine teilweise Implementierung bereit und Unterklassen müssen nicht implementierte Methoden implementieren. Im Strategiemuster wird die Schnittstelle zum Definieren des Algorithmus verwendet, und die abstrakte Klasse oder konkrete Klasse stellt die Implementierung bereit, wodurch ein dynamischer Wechsel von Algorithmen ermöglicht wird. Im Beobachtermuster werden Schnittstellen zum Definieren des Beobachterverhaltens verwendet, und abstrakte oder konkrete Klassen werden zum Abonnieren und Veröffentlichen von Benachrichtigungen verwendet. Im Adaptermuster werden Schnittstellen verwendet, um vorhandene Klassen anzupassen, oder konkrete Klassen können kompatible Schnittstellen implementieren und so eine Interaktion mit Originalcode ermöglichen.

Schnittstellen und abstrakte Klassen werden verwendet, um erweiterbaren PHP-Code zu erstellen, und es gibt den folgenden Hauptunterschied zwischen ihnen: Schnittstellen erzwingen durch Implementierung, während abstrakte Klassen durch Vererbung erzwungen werden. Schnittstellen können keine konkreten Methoden enthalten, abstrakte Klassen hingegen schon. Eine Klasse kann mehrere Schnittstellen implementieren, aber nur von einer abstrakten Klasse erben. Schnittstellen können nicht instanziiert werden, abstrakte Klassen jedoch schon.

Für die Wiederverwendbarkeit von Code werden sowohl funktionale Schnittstellen als auch abstrakte Klassen verwendet, sie werden jedoch auf unterschiedliche Weise implementiert: funktionale Schnittstellen durch Referenzfunktionen, abstrakte Klassen durch Vererbung. Funktionale Schnittstellen können nicht instanziiert werden, abstrakte Klassen jedoch schon. Funktionale Schnittstellen müssen alle deklarierten Methoden implementieren, während abstrakte Klassen nur einige Methoden implementieren können.

Java ermöglicht die Definition innerer Klassen innerhalb von Schnittstellen und abstrakten Klassen und bietet so Flexibilität für die Wiederverwendung und Modularisierung von Code. Innere Klassen in Schnittstellen können spezifische Funktionen implementieren, während innere Klassen in abstrakten Klassen allgemeine Funktionen definieren können und Unterklassen konkrete Implementierungen bereitstellen.

Schnittstelle: Eine implementierte Vertragsschnittstelle definiert eine Reihe von Methodensignaturen in Java, stellt jedoch keine konkrete Implementierung bereit. Es fungiert als Vertrag, der Klassen, die die Schnittstelle implementieren, dazu zwingt, ihre angegebenen Methoden zu implementieren. Die Methoden in der Schnittstelle sind abstrakte Methoden und haben keinen Methodenkörper. Codebeispiel: publicinterfaceAnimal{voideat();voidsleep();} Abstrakte Klasse: Teilweise implementierter Entwurf Eine abstrakte Klasse ist eine übergeordnete Klasse, die eine teilweise Implementierung bereitstellt, die von ihren Unterklassen geerbt werden kann. Im Gegensatz zu Schnittstellen können abstrakte Klassen konkrete Implementierungen und abstrakte Methoden enthalten. Abstrakte Methoden werden mit dem Schlüsselwort abstract deklariert und müssen von Unterklassen überschrieben werden. Codebeispiel: publicabstractcla

Der Hauptunterschied zwischen einer abstrakten Klasse und einer Schnittstelle besteht darin, dass eine abstrakte Klasse die Implementierung einer Methode enthalten kann, während eine Schnittstelle nur die Signatur einer Methode definieren kann. 1. Die abstrakte Klasse wird unter Verwendung eines abstrakten Schlüsselworts definiert, das abstrakte und konkrete Methoden enthalten kann, die für die Bereitstellung von Standardimplementierungen und zur gemeinsamen Code geeignet sind. 2. Die Schnittstelle wird mit dem Schlüsselwort der Schnittstelle definiert, das nur Methodensignaturen enthält, die zur Definition von Verhaltensnormen und zur Mehrfachvererbung geeignet sind.

Interface Interface definiert abstrakte Methoden und Konstanten in Java. Die Methoden in der Schnittstelle sind nicht implementiert, sondern werden von der Klasse bereitgestellt, die die Schnittstelle implementiert. Die Schnittstelle definiert einen Vertrag, der erfordert, dass die Implementierungsklasse bestimmte Methodenimplementierungen bereitstellt. Deklarieren Sie die Schnittstelle: publicinterfaceExampleInterface{voiddoSomething();intgetSomething();} Abstrakte Klasse Eine abstrakte Klasse ist eine Klasse, die nicht instanziiert werden kann. Es enthält eine Mischung aus abstrakten und nicht-abstrakten Methoden. Ähnlich wie Schnittstellen werden abstrakte Methoden in abstrakten Klassen durch Unterklassen implementiert. Abstrakte Klassen können jedoch auch konkrete Methoden enthalten, die Standardimplementierungen bereitstellen. Deklarieren Sie die abstrakte Klasse: publicabstractcl
