Trotz der Tatsache, dass diese Frage vor langer Zeit gestellt wurde, würde eine umfassende Beschreibung meiner Meinung nach klarstellen, warum es nicht erforderlich ist, public abstract vor Methoden und public static final vor Konstanten einer Schnittstelle zu verwenden.
Zunächst werden Schnittstellen verwendet, um allgemeine Methoden für eine Reihe nicht verwandter Klassen anzugeben, für die jede Klasse eine eindeutige Implementierung hat. Daher ist es nicht möglich, den Zugriffsmodifikator als privat anzugeben, da andere Klassen, auf die überschrieben werden soll, nicht auf ihn zugreifen können.
Zweitens kann man zwar Objekte eines Schnittstellentyps initiieren, aber eine Schnittstelle wird von den Klassen realisiert, die sie implementieren und nicht vererbt. Und da eine Schnittstelle möglicherweise von verschiedenen nicht verwandten Klassen implementiert (realisiert) wird, die sich nicht im selben Paket befinden, ist der Modifikator für geschützten Zugriff ebenfalls nicht gültig. Für den Zugriffsmodifikator bleibt uns also nur die öffentliche Wahl.
Drittens hat eine Schnittstelle keine Datenimplementierung, einschließlich der Instanzvariablen und -methoden. Wenn es einen logischen Grund gibt, implementierte Methoden oder Instanzvariablen in eine Schnittstelle einzufügen, muss es sich um eine Oberklasse in einer Vererbungshierarchie und nicht um eine Schnittstelle handeln. In Anbetracht dieser Tatsache müssen alle Methoden in der Schnittstelle abstrakt sein, da keine Methode in einer Schnittstelle implementiert werden kann.
Viertens kann Interface nur Konstanten als Datenelemente enthalten, was bedeutet, dass sie endgültig sein müssen und natürlich Endkonstanten als statisch deklariert werden, um nur eine Instanz von ihnen zu behalten. Daher ist das statische Finale auch ein Muss für Schnittstellenkonstanten.
Zusammenfassend lässt sich sagen, dass die Verwendung von public abstract vor Methoden und public static final vor Konstanten einer Schnittstelle gültig ist, aber da es keine anderen Optionen gibt, wird sie als redundant betrachtet und nicht verwendet.