Was ich meine ist:
interface B {...}
interface A extends B {...} // allowed
interface A implements B {...} // not allowed
Ich googeln es und ich fand dies :
implements
bezeichnet das Definieren einer Implementierung für die Methoden einer Schnittstelle. Schnittstellen sind jedoch nicht implementiert, sodass dies nicht möglich ist.
Die Schnittstelle ist jedoch eine 100% abstrakte Klasse, und eine abstrakte Klasse kann Schnittstellen (100% abstrakte Klasse) implementieren, ohne ihre Methoden zu implementieren. Was ist das Problem, wenn es als "Schnittstelle" definiert wird?
Im Detail,
interface A {
void methodA();
}
abstract class B implements A {} // we may not implement methodA() but allowed
class C extends B {
void methodA(){}
}
interface B implements A {} // not allowed.
//however, interface B = %100 abstract class B
quelle
implements
bedeutet, dass ein Verhalten fürabstract
Methoden definiert wird (außer natürlich für abstrakte Klassen), definieren Sie die Implementierung.extends
bedeutet, dass ein Verhalten vererbt wird.Mit Schnittstellen kann man sagen, dass eine Schnittstelle das gleiche Verhalten wie eine andere haben sollte, es gibt nicht einmal eine tatsächliche Implementierung. Aus diesem Grund ist es sinnvoller, eine Schnittstelle zu einer
extends
anderen Schnittstelle zu erstellen, als sie zu implementieren.Denken Sie nebenbei daran, dass eine
abstract
Klasse , selbst wenn sieabstract
Methoden definieren kann (wie es eine Schnittstelle tut), immer noch eine Klasse ist und immer noch vererbt (erweitert) und nicht implementiert werden muss.quelle
Konzeptionell gibt es die beiden "Domänen" -Klassen und -Schnittstellen. Innerhalb dieser Domänen, die Sie immer erweitern, implementiert nur eine Klasse eine Schnittstelle, die sozusagen "die Grenze überschreitet". Grundsätzlich "erweitert" für Schnittstellen das Verhalten für Klassen. Zumindest denke ich, dass dies die Logik dahinter ist. Es scheint, als ob nicht alle mit dieser Art von Logik einverstanden sind (ich finde es selbst ein bisschen erfunden), und tatsächlich gibt es keinen technischen Grund, überhaupt zwei verschiedene Schlüsselwörter zu haben.
quelle
Dies ist einfach eine Frage der Konvention. Die Autoren der Java-Sprache entschieden, dass "Erweitern" der beste Weg ist, um diese Beziehung zu beschreiben, also verwenden wir das alle.
Obwohl eine Schnittstelle "eine 100% abstrakte Klasse" ist, denken wir im Allgemeinen nicht so über sie. Wir betrachten Schnittstellen normalerweise als ein Versprechen, bestimmte Schlüsselmethoden zu implementieren, anstatt eine Klasse, von der abgeleitet werden kann. Daher verwenden wir für Schnittstellen tendenziell eine andere Sprache als für Klassen.
Wie andere sagen, gibt es gute Gründe für die Wahl von "erweitert" gegenüber "Geräten".
quelle
Ich hoffe, dies wird Ihnen ein wenig helfen, was ich während meines Studiums in oops (Core Java) gelernt habe.
Implementiert bezeichnet das Definieren einer Implementierung für die Methoden einer Schnittstelle. Schnittstellen sind jedoch nicht implementiert, sodass dies nicht möglich ist. Eine Schnittstelle kann jedoch eine andere Schnittstelle erweitern, was bedeutet, dass sie weitere Methoden hinzufügen und ihren Typ erben kann.
Hier ist ein Beispiel unten, dies ist mein Verständnis und was ich in oops gelernt habe.
und denken Sie an eine Sache: Eine Schnittstelle kann nur eine andere Schnittstelle erweitern. Wenn Sie ihre Funktion für eine Klasse definieren möchten, wird nur eine Schnittstelle implementiert, z. B. unten
Wenn eine Klasse diese Schnittstelle implementieren würde, würde sie folgendermaßen aussehen:
und wenn eine abstrakte Klasse eine abstrakte Funktion zum Definieren und Deklarieren hat und Sie diese Funktion definieren möchten oder sagen können, dass Sie diese Funktion implementieren, nehmen Sie an, diese Klasse zu erweitern, da die abstrakte Klasse nur erweitert werden kann. Hier ist ein Beispiel unten.
Hier ist eine Beispielunterklasse von MyAbstractClass:
quelle
Die Schnittstelle ist wie eine Abstraktion, die keine Funktionalität bietet. Daher werden die anderen Abstraktionen oder Schnittstellen nicht "implementiert", sondern erweitert.
quelle
Interface ist die Klasse, die eine abstrakte Methode enthält, die kein Objekt erstellen kann. Da Interface das Objekt nicht erstellen kann und keine reine Klasse ist, lohnt es sich nicht, es zu implementieren.
quelle