Implementar várias interfaces em Java
![Implementar várias interfaces em Java](/img/Java/feature-image---implements-multiple-interfaces.webp)
Este tutorial apresenta como uma classe pode implementar várias interfaces em Java e também lista alguns códigos de exemplo para entender o tópico.
Em Java, uma interface é semelhante a uma classe, exceto que pode ter apenas métodos abstratos. Uma interface é conhecida como um blueprint para uma classe, e a classe que implementa uma interface deve fornecer uma implementação para todos os métodos abstratos ou declarar o próprio abstrato.
Em Java, a classe pode estender apenas uma única classe, mas pode implementar várias interfaces. Então, se alguém perguntar a você, uma classe pode implementar várias interfaces? Então, diga SIM.
Vamos começar com alguns exemplos de código para entender o conceito. Esta é uma estrutura geral de implementação de interface múltipla.
class A implements B, C, D
....Z
As classes existentes em coleções Java que implementam várias interfaces são:
Além do código do desenvolvedor, se notarmos a fonte JDK, descobriremos que Java usou várias implementações de interface, como ArrayList, classe HashMap, etc.
ArrayList<E>
implementa interfaces múltiplas
public class ArrayList<E>
extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
// Implements multiple interfaces
HashMap<K,V>
implementa interfaces múltiplas
public class HashMap<K, V> extends AbstractMap<K, V> implements Map<K, V>, Cloneable, Serializable
// Implements multiple interfaces
Implementa Interface Múltipla em Java
Java permite que uma classe implemente várias interfaces. Portanto, podemos implementar o quanto quisermos. Neste exemplo, criamos 3 interfaces e as implementamos usando uma classe.
Ao trabalhar com a interface, certifique-se de que a classe implemente todos os seus métodos abstratos. Veja o exemplo abaixo onde implementamos todos os métodos de todas as 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");
}
}
Produção:
Interface A
Interface B
Interface C
Interface estende Multiple Interface em Java
Uma interface também pode implementar (estender) várias interfaces. Java permite a interface como uma classe e pode implementar várias interfaces.
No caso de interface, devemos usar a palavra-chave externds
no lugar de implements
para implementar interfaces. Veja o exemplo abaixo.
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");
}
}
Produção:
Interface A
Interface B
Interface C
Interface D
É importante que, se você implementar uma interface em uma classe, forneça implementos de métodos abstratos, caso contrário, o compilador Java gerará um erro. Veja o exemplo abaixo.
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");
}
}
Produção:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The type SimpleTesting must implement the inherited abstract method B.showB()