was ist die implizite Deklaration von interface-Methoden in Java 8?
War ich beim Lesen meiner alten SCJP 6 Buch(Autor, Kathy Sierra,Bert Bates) erwähnt
- Alle
interface
Methoden sind implizitpublic
undabstract
standardmäßig interface
Methoden müssen nichtstatic
Zum Beispiel, wenn wir erklären
interface Car
{
void bounce(); //no need of public abstract
void setBounceFactor(int b); //no need of public abstract
}
Was der compiler sieht
interface Car
{
public abstract void bounce();
public abstract void setBounceFactor(int b);
}
Aber von Java 8, Schnittstellen können jetzt definieren von statischen Methoden. finden Sie in diesem Artikel alles über die java-8
Auf meine Frage, was ist die implizite Deklaration von interface-Methoden in Java 8? Nur public
oder nichts?
- Mein Verständnis ist, dass die Standard -
public
undabstract
wird noch bleiben, um wahr zu sein. - Wenn Sie deklarieren, die Methode
static
dann, wieabstract
arbeiten kann? - Siehe stackoverflow.com/a/513001/2860598
- Statische interface-Methoden können nicht Abstrakt sein, wie alle anderen statischen Methoden. Nur Instanz-Methoden sind implizit public und abstract.
- ich danke Ihnen, sir.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Regeln für implizite Modifikatoren nicht ändern. Implizite Modifikatoren verwendet werden, wenn keine anderen Modifikatoren angegeben werden.
abstract
ist stillschweigend wenn wederstatic
nochdefault
angegeben wurde. Und alle Methoden sind immerpublic
ob implizite oder explizite. Beachten Sie, dassinterface
Felder waren immer implizitpublic
static
. Dies nicht zu ändern.Aber für die letzten Worte sollten wir warten, für die Fertigstellung von Java 8.
Afaik ist es etwas, das Sie hinzufügen können, und Hinzugefügt werden, ohne änderungen an der Implementierung von Klassen.
Zum Beispiel. Die List-Klasse wird eine sort () - Methode Hinzugefügt. Eine sub-Klasse könnte diese Methode schon, aber wenn jede Klasse benötigt diese Methode würde es brechen eine Menge code mit einem Standard-ein bisschen nutzlos.
Ich glaube, es ist zu erwarten, dass die Standard-Methode einfach aufrufen einer statischen Methode oder helper-Klasse zu verlassen, das interface aufgeräumt.
in kurz -, Standard-Methoden öffentlich sind, aber nicht Abstrakt.
btw-interfaces haben eine Methode für statische Feld-Initialisierung.
Antwort ist: Es ist noch
public
.private
oderprotected
eingeschränkt sind. Suchen Sie im folgenden zwei Beispiele