Nonostante il fatto che questa domanda sia stata posta molto tempo fa, ma ritengo che una descrizione esaustiva chiarirebbe perché non è necessario utilizzare un estratto pubblico prima dei metodi e un finale statico pubblico prima delle costanti di un'interfaccia.
Innanzitutto le interfacce vengono utilizzate per specificare metodi comuni per un insieme di classi non correlate per le quali ogni classe avrà un'implementazione unica. Pertanto, non è possibile specificare il modificatore di accesso come privato poiché non è possibile accedervi da altre classi.
In secondo luogo, sebbene sia possibile avviare oggetti di un tipo di interfaccia ma un'interfaccia è realizzata dalle classi che la implementano e non ereditata. E poiché un'interfaccia potrebbe essere implementata (realizzata) da diverse classi non correlate che non sono nello stesso pacchetto, pertanto anche il modificatore di accesso protetto non è valido. Quindi per il modificatore di accesso ci resta solo una scelta pubblica.
In terzo luogo, un'interfaccia non ha alcuna implementazione dei dati, comprese le variabili e i metodi dell'istanza. Se esiste una ragione logica per inserire metodi implementati o variabili di istanza in un'interfaccia, allora deve essere una superclasse in una gerarchia di ereditarietà e non un'interfaccia. Considerando questo fatto, poiché nessun metodo può essere implementato in un'interfaccia, quindi tutti i metodi nell'interfaccia devono essere astratti.
In quarto luogo, Interface può includere solo la costante come membri dei dati, il che significa che devono essere finali e, naturalmente, le costanti finali vengono dichiarate come statiche per conservarne solo un'istanza. Pertanto, anche il finale statico è un must per le costanti di interfaccia.
Quindi, in conclusione, sebbene l'uso di abstract pubblici prima dei metodi e di public static final prima delle costanti di un'interfaccia sia valido, ma poiché non ci sono altre opzioni, è considerato ridondante e non utilizzato.