2009-04-26 8 views
7

Conozco la diferencia entre "interfaz pública" e "interfaz pública abstracta", pero cuando se aplica a los métodos, ¿existen diferencias?usando una palabra clave abstracta en la interfaz

public interface IPluggableUi { 
    abstract public JComponent getPanel(); 
    abstract public void initUi(); 
} 

o

public interface IPluggableUi { 
    public JComponent getPanel(); 
    public void initUi(); 
} 
+1

¿Hay alguna razón por la que no se haya aceptado ninguna de las respuestas? – t0r0X

Respuesta

4

no, usted podría también escribir

public interface IPluggableUi { 
    JComponent getPanel(); 
    void initUi(); 
} 

es la misma cosa

0

No. Puede sólo se aplican abstract en un método a una base abstracta clase.

Las interfaces especifican el conjunto de métodos que deben implementarse finalmente mediante una clase concreta (no abstracta).

Resumen especificará un método que no se implementa en una clase base abstracta, y que debe implementarse en una subclase concreta.

(Tenga en cuenta también que la palabra clave es superflua en public especificaciones del método en una interfaz)

22

métodos declarados en las interfaces son por defecto tanto públicos como abstracto.

Sin embargo, se podría:

public interface myInterface{ 
    public abstract void myMethod(); 
} 

Sin embargo, el uso de estos modificadores se desanima. También lo es el modificador abstracto aplicado a la declaración de la interfaz.

En particular, con respecto a su pregunta:

"Para la compatibilidad con versiones anteriores de la plataforma Java, está permitido pero desaconsejado, ya que una cuestión de estilo, especificar redundantemente el modificador abstracto para los métodos declarados en las interfaces"

fuente: http://java.sun.com/docs/books/jls/second_edition/html/interfaces.doc.html

Sección 9.4: declaraciones de métodos abstractos.

4

Una nota al margen; Los valores definidos en una interfaz son público estático final mi valor predeterminado así que

int VALOR = 5;

es la misma que

público static final int VALUE = 5;

en una interfaz.

0

No hay una interfaz abstracta pública en Java. Todas las interfaces son "abstractas" por el hecho de que no se pueden crear instancias. Todas las funciones son automáticamente "abstractas" ya que deben implementarse.

Cuestiones relacionadas