Implementar várias interfaces em Java

Mohammad Irfan 12 outubro 2023
  1. Implementa Interface Múltipla em Java
  2. Interface estende Multiple Interface em Java
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()

Artigo relacionado - Java Interface