El modificador abstracto para un método de interfaz siempre es redundante, así como el modificador pública.
El modificador abstracto en la interfaz en sí mismo puede ser redundante por una razón técnica estricta, ya que una interfaz nunca puede crearse una instancia utilizando el nuevo operador y la interfaz siempre será abstracta si se solicita a través de la reflexión.
Sin embargo, puede haber una razón semántica para declarar un resumen de interfaz (que también es compatible con varias herramientas UML): Es posible que desee expresar que una interfaz se declara explícitamente abstracta en la forma que una clase no abstracta no puede implementar la interfaz directamente, sino solo a través de una interfaz secundaria. Por ejemplo, podría considerar el Nodo de interfaz como semánticamente abstracto, mientras que las subinterfaces Carpeta y Archivo que extienden el Nodo no son semánticamente abstractas. Nunca tendrá una instancia que sea solo un nodo: será una carpeta o un archivo.
Aún más hay frameworks que permiten la "instanciación" de interfaces (técnicamente a través de proxies dinámicos). Hay alguna interfaz (por ejemplo, una interfaz base predefinida) que no puede suministrar como argumento. Para fines de documentación puede tener sentido en el código fuente usar el modificador abstracto para expresar dicha información.
Un ejemplo de GWT 2.0: D –
@Sudhir, googleando para el fragmento de código que publicó Encontré este hilo de correo donde se discute el mismo problema: http://osdir.com/ml/Google-Web-Toolkit/2010- 01/msg00452.html También vea: http://osdir.com/ml/Google-Web-Toolkit/2010-01/msg00516.html donde se menciona una explicación probable del uso. (parafraseando: lo que comenzó como una clase abstracta pudo haberse cambiado para interactuar con el modificador anterior que no se eliminó) – sateesh
Hmmm ... eso lo explicaría. –