Pregunta

Tengo el siguiente interfaz en Java

public interface IFoo
{
    public abstract void foo();
    public void bar();
}

¿Cuál es la diferencia entre foo () y bar ()? ¿Cuándo debo utilizar abstracto?

Ambos parecen haber realizado lo que deseo, a menos que me falta algo sutil?

Actualizar Duplicar de ¿Por qué uno declarar un método de interfaz Java como abstracto?

¿Fue útil?

Solución

No hay ninguna diferencia funcional. Sin aplicación alguna vez se proporciona en una interfaz Java por lo que todas las declaraciones de métodos son implícitamente abstracta.

Vea [1]: http: //java.sun .com / docs / libros / tutorial / java / IandI / abstract.html

forman una cita directa de lo anterior:

  

Nota: Todos los métodos en una interfaz (véase la sección Interfaces) son implícitamente abstracta, por lo que el modificador abstract no se utiliza con métodos de interfaz (que podría ser, no es sólo necesario)

.

Otros consejos

métodos de interfaz son ambos public y abstract por defecto. No hay diferencia entre foo() y bar() y se puede retirar de forma segura todas las palabras clave y public abstract.

Usted no está perdiendo nada. Desde el de Java Language Specification :

  

Cada declaración de método en el cuerpo   de una interfaz es implícitamente   abstracta, por lo que su cuerpo es siempre   representado por un punto y coma, no una   bloque.

     

Cada declaración de método en el cuerpo   de una interfaz es implícitamente público.

En otras palabras, se puede omitir el public así como la abstract en los métodos de interfaz.

es redundante (no hay diferencia entre las dos declaraciones) y desanimado explícitamente en sección 9.4 de la especificación del lenguaje Java:

  

Para la compatibilidad con versiones anteriores   de la plataforma Java, se permite   pero desanimado, como una cuestión de estilo,   para especificar redundantemente el resumen   modificador para métodos declarados en   interfaces.

Y public es igualmente innecesario y desanimado:

  

Está permitido, pero desaconseja encarecidamente como una cuestión de estilo, para especificar la forma redundante   modificador pública para métodos de interfaz.

No sé por qué public es muy desanimados, pero abstract es sólo desalentado ...

Tanto lograr los mismos, ya que todos los métodos en una interfaz son abstractos.

abstract en este escenario es innecesario (como está marcando métodos en interfaces como public).

Se podría en lugar utilizar esto en un método en una clase abstracta con el fin de hacer cumplir su primordial por una subclase.

Ya no hay diferencia entre las declaraciones. Conceptualmente, todos los métodos en una interfaz son abstractos.

No hace ninguna diferencia. Todos los métodos en una interfaz Java son siempre abstracto.

Vea la primera nota en este enlace: http://java.sun.com/docs/books/ tutorial / java / IandI / abstract.html

Tanto foo () y bar () son abstractas, ya que se declaran dentro de una interfaz. La palabra abstracta que utilizó aquí no es de importancia -. Se quita mejor

Las interfaces de Java son iguales "de alguna manera" a una clase totalmente abstractas, por lo que añadir la palabra clave "abstracto" a una declaración de método en una interfaz no tiene nada que ver con el método!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top