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()