Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Comprendre les interfaces Java : Définitions, Usages et Bonnes pratiques

Une interface est un type de référence en Java, similaire à une classe. C'est une collection de méthodes abstraites. Une classe implémente une interface, héritant ainsi de ses méthodes abstraites.

Une interface peut aussi contenir : constantes, méthodes par défaut (default), méthodes statiques, types imbriqués. Seules les méthodes default et static ont un corps.

Interface vs Classe

Similitudes :

Différences :

Déclaration d'interface


/* NomInterface.java */
import java.lang.*;

public interface NomInterface {
    // constantes static final
    // déclarations de méthodes abstraites
}

Propriétés :

Exemple simple


interface Animal {
    public void manger();
    public void voyager();
}

Implémentation d'interface

Une classe implémentant une interface "signe un contrat" : elle doit fournir toutes les méthodes (sauf si elle est abstraite).

Mot-clé : implements (après extends s'il y a lieu).

Exemple


public class MammifereImpl implements Animal {
    public void manger() {
        System.out.println("Mammifère mange");
    }
    
    public void voyager() {
        System.out.println("Mammifère voyage");
    }
    
    public int nombrePattes() { return 0; }
    
    public static void main(String args[]) {
        MammifereImpl m = new MammifereImpl();
        m.manger();
        m.voyager();
    }
}

Résultat :


Mammifère mange
Mammifère voyage

Règles de redéfinition

Règles d'implémentation

Extension d'interfaces

Mot-clé extends. L'interface fille hérite des méthodes de la parente.

Exemple : Sports, Football, Hockey


// Sports.java
public interface Sports {
    public void setEquipeDomicile(String nom);
    public void setEquipeVisiteur(String nom);
}

// Football.java
public interface Football extends Sports {
    public void butDomicile(int points);
    public void butVisiteur(int points);
    public void finQuartTemps(int quart);
}

// Hockey.java
public interface Hockey extends Sports {
    public void butDomicile();
    public void butVisiteur();
    public void finPeriode(int periode);
    public void prolongation(int ot);
}

Hockey a 4 méthodes propres + 2 héritées = 6 à implémenter. Football : 3 + 2 = 5.

Extension de multiples interfaces

Une classe ne peut étendre qu'une classe, mais une interface peut étendre plusieurs interfaces :


public interface Hockey extends Sports, Evenement { }

Interfaces de marquage (Tagging Interfaces)

Interface sans méthodes. Exemple : java.util.EventListener :


package java.util;
public interface EventListener {}

Deux usages :

  1. Parent commun : EventListener est étendue par des dizaines d'interfaces (MouseListener, etc.). La JVM sait qu'une interface étendant EventListener sert à la délégation d'événements.
  2. Ajout de type à une classe : une classe implémentant une interface de marquage n'a pas de méthodes à définir, mais devient de ce type par polymorphisme (ex: Serializable, Cloneable).

Java

  1. Comprendre le mot-clé final en Java : variables, méthodes et classes
  2. L'opérateur instanceof en Java : guide complet
  3. Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
  4. Comprendre les classes imbriquées statiques en Java : utilisation, différences et exemples
  5. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  6. Le pattern Singleton en Java expliqué : implémentation et utilisation sûre
  7. Maîtriser la réflexion Java : inspection des classes, méthodes et champs à l'exécution
  8. Maîtriser Java ObjectOutputStream : Sérialisation, méthodes et exemples pratiques
  9. Maîtriser les génériques Java : Construire du code réutilisable et type-safe