Implémenter plusieurs interfaces en Java

Mohammad Irfan 12 octobre 2023
  1. Implémente plusieurs interfaces en Java
  2. L’interface étend l’interface multiple en Java
Implémenter plusieurs interfaces en Java

Ce didacticiel présente comment une classe peut implémenter plusieurs interfaces en Java et répertorie également quelques exemples de codes pour comprendre le sujet.

En Java, une interface est similaire à une classe sauf qu’elle ne peut avoir que des méthodes abstraites. Une interface est connue comme un modèle pour une classe, et la classe qui implémente une interface doit fournir une implémentation pour toutes les méthodes abstraites ou déclarer l’abstrait lui-même.

En Java, la classe ne peut étendre qu’une seule classe mais peut implémenter plusieurs interfaces. Donc, si quelqu’un vous le demande, une classe peut-elle implémenter plusieurs interfaces ? Ensuite, dites OUI.

Commençons par quelques exemples de code pour comprendre le concept. Il s’agit d’une structure générale d’implémentation d’interfaces multiples.

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

Les classes existantes dans les collections Java qui implémentent plusieurs interfaces sont :

En dehors du code du développeur, si nous remarquons la source JDK, nous constaterons que Java a utilisé plusieurs implémentations d’interface telles que ArrayList, la classe HashMap, etc.

ArrayList<E> implémente plusieurs interfaces

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

HashMap<K,V> implémente plusieurs interfaces

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

Implémente plusieurs interfaces en Java

Java permet à une classe d’implémenter plusieurs interfaces. Ainsi, nous pouvons mettre en œuvre autant que nous voulons. Dans cet exemple, nous avons créé 3 interfaces puis les avons implémentées en utilisant une classe.

Lorsque vous travaillez avec l’interface, assurez-vous que la classe implémente toutes ses méthodes abstraites. Voir l’exemple ci-dessous où nous avons implémenté toutes les méthodes des 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");
  }
}

Production:

Interface A
Interface B
Interface C

L’interface étend l’interface multiple en Java

Une interface peut également implémenter (étendre) plusieurs interfaces. Java permet de s’interfacer comme une classe et peut implémenter plusieurs interfaces.

Dans le cas de l’interface, nous devrions utiliser le mot-clé externds à la place de implements pour implémenter les interfaces. Voir l’exemple ci-dessous.

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");
  }
}

Production:

Interface A
Interface B
Interface C
Interface D

Il est important que si vous implémentez une interface dans une classe, vous devez alors fournir des implémentations de méthodes abstraites, sinon le compilateur Java générera une erreur. Voir l’exemple ci-dessous.

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");
  }
}

Production:

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

Article connexe - Java Interface