¿Podemos anular el método predeterminado en Java?

El método predeterminado en Java es un método en Java que se define dentro de la interfaz con la palabra clave predeterminada que se conoce como el método predeterminado. Es un tipo de método no abstracto. 

Este método es capaz de agregar capacidad hacia atrás para que la interfaz anterior pueda captar la capacidad de expresión lambda.

El método predeterminado de la interfaz Java también se conoce como método Defender o método de extensión virtual.

Las interfaces solo podían tener métodos abstractos antes de Java 8. Las clases proporcionan por separado la implementación de estos métodos. superar

¿Podemos anular el método predeterminado en Java?

No es obligatorio anular el método predeterminado en Java. 

Si estamos usando solo una interfaz en un programa, entonces estamos usando solo un único método predeterminado y en ese momento no se requiere anular como se muestra en el siguiente programa:

Java

// Creating Interface
interface  GfG{
  
   public default void display() {
      System.out.println("GEEKSFORGEEKS");
   }
}
  
// Main Class With Implementation Of Interface
public class InterfaceExample implements GfG{
   public static void main(String args[]) {
      InterfaceExample obj = new InterfaceExample();
       
      // Calling Interface
      obj.display(); 
   }
}
Producción

GEEKSFORGEEKS

Pero cuando se usan más de dos interfaces y ambas actúan como clase principal, en ese momento se requiere la anulación del método predeterminado. Si estamos usando más de una interfaz y en ambas interfaces, si ambas interfaces tienen el mismo nombre y la misma estructura. Entonces, en ese momento, uno debe anular cualquiera de los dos métodos predeterminados; de lo contrario, se producirá un error.

Caso 1: cuando dos interfaces no se anulan

Java

// Java program to demonstrate the case when 
// two interfaces are not overridden
  
// Creating Interface One
interface GfG{
   public default void display() {
      System.out.println("GEEKSFORGEEKS");
   }
}
  
// Creating Interface Two
interface gfg{
  
   public default void display() {
      System.out.println("geeksforgeeks");
   }
}
  
// Interfaces are not Overidden 
public class InterfaceExample implements GfG,gfg {
   public static void main(String args[])
   {
      InterfaceExample obj = new InterfaceExample();
      obj.display();
   }
}

Producción:

InterfaceExample.java:18: error: types GfG and gfg are incompatible;
public class InterfaceExample implements GfG,gfg {
       ^
  class InterfaceExample inherits unrelated defaults for display() from types GfG and gfg
1 error

Caso 2: cuando se anulan dos interfaces

Java

// Java program to demonstrate the case
// when two interfaces are overridden
  
// Creating Interface One
interface GfG{
   public default void display()
   {
      System.out.println("GEEKSFORGEEKS");
   }
}
  
// Creating Interface Two
interface gfg{
  
   public default void display() 
   {
      System.out.println("geeksforgeeks");
   }
}
  
public class InterfaceExample implements GfG,gfg {
  
// Interfaces are Overrided
public void display() {
    
      GfG.super.display();
       
      gfg.super.display();
   }
  
public static void main(String args[]) {
      InterfaceExample obj = new InterfaceExample();
      obj.display();
   }
}
Producción

GEEKSFORGEEKS
geeksforgeeks

Publicación traducida automáticamente

Artículo escrito por jagroopofficial y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *