Las Interfaces nos permiten usar métodos abstractos y campos constantes para implementar herencia/polimorfismo de forma muy similar a las clases abstractas.
A partir de Java 8 podemos tener implementación en métodos para heredar y reutilizar diferentes comportamientos. No todos los métodos de nuestras interfaces deben ser abstractos, ahora podemos usar el modificador de acceso default y desde Java 9 también private.
Recuerda que el nivel de acceso de default y private son los mismos que estudiamos en clases anteriores.
publicinterfaceMyInterface {
// Métodos default: nos permite heredar la definición// de la función y también su implementación...defaultvoiddefaultMethod() {
privateMethod("Hello from the default method!");
}
// Métodos private: nos permiten definir comportamiento,// pero solo se puede usar desde otras clases de esta// interfaz, no se hereda a la clase hija....privatevoidprivateMethod(final String message) {
System.out.println(message);
}
// Métodos abstractos: recuerda que todos los métodos// son abstractos por defecto...voidnormalMethod();
}