Eine Schnittstelle in Java ähnelt einer Klasse, der Hauptteil einer Schnittstelle kann jedoch nur abstrakte Methoden und
final
Felder (Konstanten) enthalten.
Kürzlich habe ich eine Frage gesehen, die so aussieht
interface AnInterface {
public default void myMethod() {
System.out.println("D");
}
}
Gemäß der Schnittstellendefinition sind nur abstrakte Methoden zulässig. Warum kann ich den obigen Code kompilieren? Was ist das default
Schlüsselwort?
Auf der anderen Seite, wenn ich versucht habe, unten Code zu schreiben, dann heißt es modifier default not allowed here
default class MyClass{
}
anstatt
class MyClass {
}
Kann mir jemand den Zweck des default
Schlüsselworts sagen ? Ist es nur innerhalb einer Schnittstelle erlaubt? Wie unterscheidet es sich von default
(kein Zugriffsmodifikator)?