HOWTO · Java
Implementar várias interfaces em Java
Este post tem como objetivo saber como uma classe pode implementar várias interfaces em Java.
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()