Implementar múltiples interfaces en Java

Mohammad Irfan 12 octubre 2023
  1. Implementa múltiples interfaces en Java
  2. La interfaz extiende la interfaz múltiple en Java
Implementar múltiples interfaces en Java

Este tutorial presenta cómo una clase puede implementar múltiples interfaces en Java y también enumera algunos códigos de ejemplo para comprender el tema.

En Java, una interfaz es similar a una clase, excepto que solo puede tener métodos abstractos. Una interfaz se conoce como un modelo para una clase, y la clase que implementa una interfaz debe proporcionar una implementación para todos los métodos abstractos o declarar el resumen en sí.

En Java, la clase puede extender solo una clase pero puede implementar múltiples interfaces. Entonces, si alguien te pregunta, ¿puede una clase implementar múltiples interfaces? Entonces, diga SÍ.

Comencemos con algunos ejemplos de código para comprender el concepto. Esta es una estructura general de implementación de múltiples interfaces.

class A implements B, C, D
....Z

Las clases existentes en las colecciones de Java que implementan múltiples interfaces son:

Además del código de desarrollador, si notamos la fuente JDK, encontraremos que Java usó múltiples implementaciones de interfaz como ArrayList, clase HashMap, etc.

ArrayList<E> implementa múltiples interfaces

public class ArrayList<E>
    extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
// Implements multiple interfaces

HashMap<K,V> implementa múltiples interfaces

public class HashMap<K, V> extends AbstractMap<K, V> implements Map<K, V>, Cloneable, Serializable
// Implements multiple interfaces

Implementa múltiples interfaces en Java

Java permite que una clase implemente múltiples interfaces. Entonces, podemos implementar todo lo que queramos. En este ejemplo, creamos 3 interfaces y luego las implementamos usando una clase.

Mientras trabaja con la interfaz, asegúrese de que la clase implemente todos sus métodos abstractos. Vea el ejemplo a continuación donde implementamos todos los métodos de las 3 interfaces.

package javaexample;
interface A {
  void showA();
}
interface B {
  void showB();
}
interface C {
  void showC();
}
public class SimpleTesting implements A, B, C {
  public static void main(String[] args) {
    SimpleTesting st = new SimpleTesting();
    st.showA();
    st.showB();
    st.showC();
  }
  @Override
  public void showA() {
    System.out.println("Interface A");
  }
  @Override
  public void showB() {
    System.out.println("Interface B");
  }
  @Override
  public void showC() {
    System.out.println("Interface C");
  }
}

Producción :

Interface A
Interface B
Interface C

La interfaz extiende la interfaz múltiple en Java

Una interfaz también puede implementar (extender) múltiples interfaces. Java permite interactuar como una clase y puede implementar múltiples interfaces.

En el caso de la interfaz, deberíamos usar la palabra clave externds en lugar de implements para implementar interfaces. Vea el ejemplo a continuación.

package javaexample;
interface A {
  void showA();
}
interface B {
  void showB();
}
interface C {
  void showC();
}
interface D extends A, B, C {
  void showD();
}
public class SimpleTesting implements D {
  public static void main(String[] args) {
    SimpleTesting st = new SimpleTesting();
    st.showA();
    st.showB();
    st.showC();
    st.showD();
  }
  @Override
  public void showA() {
    System.out.println("Interface A");
  }
  @Override
  public void showB() {
    System.out.println("Interface B");
  }
  @Override
  public void showC() {
    System.out.println("Interface C");
  }
  @Override
  public void showD() {
    System.out.println("Interface D");
  }
}

Producción :

Interface A
Interface B
Interface C
Interface D

Es importante que si implementa una interfaz en una clase, entonces debe proporcionar implementaciones de métodos abstractos, de lo contrario, el compilador de Java generará un error. Vea el ejemplo a continuación.

package javaexample;
interface A {
  void showA();
}
interface B {
  void showB();
}
public class SimpleTesting implements A, B {
  public static void main(String[] args) {
    SimpleTesting st = new SimpleTesting();
    st.showA();
    st.showB();
  }
  @Override
  public void showA() {
    System.out.println("Interface A");
  }
}

Producción :

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The type SimpleTesting must implement the inherited abstract method B.showB()

Artículo relacionado - Java Interface