- Interfaces - Desacoplamiento completo - "Herencia múltiple" en Java - Ampliación de la interfaz mediante herencia - Colisiones de nombres al combinar interfaces - Adaptación a una interfaz - Campos en las interfaces - Inicialización de campos en las interfaces - Anidamiento de interfaces - Interfaces y factorías
Las interfaces y las clases abstractas proporcionan una forma más estructurada de separar la interfaz de la implementación.
Estas características no son tan comunes en los lenguajes de programación. Existen palabras clave en Java para estos conceptos, por tanto, estas ideas fueron consideradas importantes para proporcionar soporte directo.
Una clase abstracta está entre una clase normal y una interfaz. Se trata de una herramienta importante y necesaria para construir clases que dispongan de algunos métodos no implementados.