Unterschied zwischen Klassenabstraktion und Objektschnittstellen in PHP?

7

Was ist der Unterschied zwischen einer Klassenabstraktion und einem Object Interfaces in PHP? Ich frage, weil, ich sehe den Punkt nicht wirklich für beide, sie machen das gleiche! Also, was sind die Vorteile der Nachteile, die beide gegen den einen oder anderen nutzen?

Klassenabstraktion :

%Vor%

Objektschnittstelle :

%Vor%     
Mark Tomlin 10.06.2010, 22:09
quelle

3 Antworten

20

Sie können mehrere Schnittstellen implementieren, aber nur eine Klasse erweitern.

Möglich:

%Vor%

Nicht möglich:

%Vor%

Zusätzlich kann eine Schnittstelle keine Implementierung haben.

Möglich:

%Vor%

Nicht möglich:

%Vor%

Aus dem Java-Glossar :

  

Eine Schnittstelle ermöglicht es jemandem, bei Null zu beginnen, um Ihre Schnittstelle zu implementieren, oder Ihre Schnittstelle in einen anderen Code zu implementieren, dessen ursprünglicher oder primärer Zweck sich von Ihrer Schnittstelle stark unterscheidet. Für sie ist Ihre Schnittstelle nur nebensächlich, etwas, das dem Code hinzugefügt werden muss, um Ihr Paket verwenden zu können.

     

Eine abstrakte Klasse dagegen bietet mehr Struktur. Es definiert normalerweise einige Standardimplementierungen und stellt einige Werkzeuge zur Verfügung, die für eine vollständige Implementierung nützlich sind. Der Haken ist, Code, der es verwendet, muss Ihre Klasse als Basis verwenden. Dies kann sehr umständlich sein, wenn die anderen Programmierer, die Ihr Paket verwenden wollen, bereits ihre eigene Klassenhierarchie unabhängig voneinander entwickelt haben. In Java kann eine Klasse nur von einer Basisklasse erben.

Sie sollten auch einen Blick auf diese Frage werfen - Damiens Argumentation darüber, wie Schnittstelle ist ein Vertrag ist ein wichtiger.

    
Richard JP Le Guen 10.06.2010, 22:12
quelle
3

Eine abstrakte Klasse kann Methodenimplementierung zusätzlich zu Methodendefinitionen definieren. Eine -Schnittstelle kann nur die Methodendefinition angeben.

    
Annika Backstrom 10.06.2010 22:13
quelle
0

Mehrere Interfaces und Ihre Skripts führen nicht zu Verwirrung.

    
Jarrod Nettles 10.06.2010 22:14
quelle

Tags und Links