No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Interfaces en Java 8 y 9

30/38
Recursos

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.

public interface MyInterface {
  // Métodos default: nos permite heredar la definición
  // de la función y también su implementación...
  default void defaultMethod() {
    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....
  private void privateMethod(final String message) {
    System.out.println(message);
  }

  // Métodos abstractos: recuerda que todos los métodos
  // son abstractos por defecto...
  void normalMethod();
}
Encapsulamiento: Modificadores de acceso

Aportes 30

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Con este cambio, la interfaz y la clase abstracta parecen ser practicamente lo mismo. Sin embargo, la interfaz sigue siendo una abstracción completa (diseñada para que se implementen todos los métodos). La posibilidad de crear métodos default parace obedecer únicamente a facilitar la actualización de las interfaces sin que esto rompa las clases que ya la implementaban con anterioridad.

Les comparto mis notas de esta Clase:

Interfaces en Java 8 y 9

La sintaxis de las interfaces cambio un poco a partir de Java 8 y 9.

  • Java 8
    Ya no todos los métodos tiene que ser abstractos pues se cuenta con un nuevo modificador de acceso para los métodos, default. Esto permite que los métodos dentro de una interfaz puedan tener implementación, y a su vez dicha implementación se puede reutilizar en cualquier Clase sin importar a que familia pertenezca. Este modificador default en las interfaces tiene las mismas reglas y restricciones que en en caso de los métodos convencionales, es decir puede ser accedido a nivel de la Clase y por Clases/Interfaces que estén dentro de otro paquete.

  • Java 9

    Se puede añadir el modificador de acceso private a los métodos de una Interfaz. Este modificador tiene las mismas restricciones que en el caso de los métodos convencionales, es decir, sólo puede ser accedido a nivel de la Clase. También permite hacer una implementación en el método de una Interfaz.

public interface MyInterface {
    default void defaultMethod() {
        privateMethod("Hello from the default method!")
    }
    
    private void privateMethod(final String string) {
        System.out.println(string);
    }
    
    void normalMethod();
}

Este tipo de interfaces son muy útiles al trabajar con bases de datos.

☕ De Java 8 para adelante podemos usar el modificador de acceso default en nuestras interfaces, pero desde Java 9 también private.

ejale 😃 a modularizar se a dicho 😃

Aquí les dejo un video que explica de manera sencilla como implementar métodos “default” de una interfaz.

Espero les sirva.
https://youtu.be/Ixn8Ypri90w



Muchas gracias por explicar cómo afectan los modificadores de acceso a las interfaces, cuando vayamos a utilizarlos en operaciones con las bases de datos se podrá apreciar esta característica.

🤯 Esto abre un mundo de posibilidades a la hora de modularizar y estandarizar el código.

Gracias, excelente contendió. Como siempre

No sé si entendí mal, pero hasta donde yo entiendo, la palabra "default" en los métodos por defecto de una interfaz de java 8 en adelante no tiene nada que ver con el nivel de acceso, es simplemente una forma de diferenciarlos de los métodos abstractos (que dentro de una interfaz no tienen ninguna palabra clave que los identifique). Puedes tener métodos por defecto públicos, y a partir de java 9 también puedes tener métodos por defecto privados, pero no hay manera de tener métodos por defecto con el nivel de acceso "default" ni "protected".

Métodos Privados (private methods):

A veces, cuando creamos una interfaz, hay partes de código que se repiten en varios métodos. Queremos escribir este código una vez y usarlo en varios lugares, pero no queremos que otras clases lo vean.
Los métodos privados en una interfaz son como bloques de construcción ocultos. Puedes usarlos dentro de los métodos por defecto para evitar repetir código, pero otros no pueden verlos ni usarlos.

Métodos por Defecto (default methods):

Piensa en una interfaz como un contrato que las clases deben seguir. A veces, queremos añadir una nueva función a ese contrato sin afectar a las clases que ya lo siguen.
Un método por defecto es como una función en la interfaz que viene con una implementación. Las clases que siguen la interfaz pueden usar esta función si quieren, pero no están obligadas.
Ayuda a agregar nuevas funcionalidades sin obligar a todas las clases a implementar esa función.

Hay que tener en cuenta que hay distintas formas de abstraer el código, con las clases abstractas o también con las interfaces



Excelente!

muy buena explicacion

Muy buena clase 😄 ❤️

Genial! Buena información!

Al parecer con esto las interfaces permiten tener metodos que son mas fáciles de acceder sin tener que obligatoriamente que implementarlo en las clases que la usen.

Muy bien explicado las interfaces con las actualizaciones de Java 8 y 9, excelente como siempre Anahí

Una interfaz es algo así como la tabla que sale en una relación muchos a muchos en bases de datos o estoy equivocado.

ok todo muy claro con interfaces cree los Dialog en Android Studio

Sigamos.

El principal objetivo del default es para dar soporte a backward compatibility.

**Interfaces Java 8:**

Además de métodos abstractos, una interfaz puede incluir dos tipos de métodos:

**- Métodos por defecto: **
Estos métodos se declaran con el modificador default. Si una clase implementa una de estas interfaces, sería como si heredase los métodos por defecto de ella, no tiene la obligación de implementarlo
**

  • Métodos estáticos**
    Los métodos estáticos están asociados únicamente a la interfaz, las clases que implementan la interfaz no los heredan, por lo que no podrán ser llamados con el nombre de la clase o con una referencia a un objeto de la misma, solo con el nombre de la interfaz

excelente explicacion

las nuevas características de las interfaces en las versiones 8 y 9 de java, resultan ser muy interesantes.

Las bases de datos nos abrirán los ojos.

Las interfaces son como un conjunto o paquete de metodos?