una sirve qué que polimorfismo para interfaz interfaces implementacion ejemplo código clases clase asociarías abstractas abstracta java

sirve - public interface java



¿Por qué deberíamos declarar una interfaz dentro de una clase? (5)

¿Por qué deberíamos declarar una interfaz dentro de una clase en Java?

Por ejemplo:

public class GenericModelLinker implements IModelLinker { private static final Logger LOG =LoggerFactory.getLogger(GenericModelLinker.class); private String joinAsPropertyField; private boolean joinAsListEntry; private boolean clearList; private List<Link> joins; //instead of a scalar property private String uniqueProperty; public interface Link { Object getProperty(IAdaptable n); void setProperty(IAdaptable n, Object value); } }


Cuando desee reunir algunos campos en un objeto para enfatizar un concepto, puede crear una clase externa, o una interna (llamada anidada (estática) o interna).

Si desea enfatizar el hecho de que esta clase cooperativa no tiene sentido (no tiene ningún sentido) fuera del uso del objeto original, podría hacerlo anidado / interno.

Por lo tanto, cuando se trata de cierta jerarquía, puede describir una interface "anidada", que será implementada por las subclases de la clase de envoltura.

En el JDK, el ejemplo más significativo sería la interfaz interna Map.Entry , definida dentro de la interfaz Map e implementada de varias formas por HashMap , LinkedHashMap , etc ...

Y, por supuesto, Map.Entry debe declararse como public para que sea accesible mientras se itera el mapa donde sea que esté el código.


Dentro de su clase puede necesitar múltiples implementaciones de una interfaz, que solo es relevante para esta clase en particular. En ese caso, conviértalo en una interfaz interna, en lugar de pública / paquete-privada.
Solo una interfaz dentro de una clase puede declararse privada o protegida. A veces, eso tiene sentido, cuando la interfaz solo es apropiada para usar dentro de la clase externa (o sus subclases).


Esta es una interfaz interna. El lenguaje de programación Java permite definir clases internas e interfaces. Esto es típicamente útil si desea limitar la visibilidad de esta clase o interfaz por alcance de la clase externa actual.

Algunas personas usan este mecanismo para crear un tipo de espacio de nombres. En mi humilde opinión, esto es un abuso de la función de idioma (en la mayoría de los casos).


Para encapsular el comportamiento de una manera genérica y resuable.

Además del buen ejemplo de Map.Entry utilizado por las clases de implementación de Map , otro buen ejemplo es la implementación de Strategy Pattern , donde una estrategia de ejecución se evalúa y aplica internamente.

class Test { .. interface Cipher { doAction(); } class RAMPCipher implements Cipher{} class DiskCipher implements Cipher{} .. }


Si la definición de la interfaz es pequeña y la interfaz solo será utilizada por los clientes de la clase en la que está definida, es una buena forma de organizar el código. De lo contrario, la interfaz debe definirse en su propio archivo.