Interfaces Java Expliquées : Comment les Définir et les Implémenter avec Exemples Pratiques
Qu'est-ce qu'une Interface Java ?
Une interface Java est un type abstrait qui définit un contrat pour les classes. Elle peut déclarer des constantes et des méthodes abstraites mais ne peut pas contenir d'état. Toutes les méthodes sont implicitement public et abstract, et une classe peut implémenter plusieurs interfaces, fournissant le comportement requis.
Déclaration d'une Interface
interface MonInterface {
// méthodes abstraites
}
Implémentation d'une Interface
class Chien implements AnimalDeCompagnie {
// implémenter les méthodes de AnimalDeCompagnie
}
Extension d'Interfaces
interface AnimalMontable extends Animal, Vehicule {
// méthodes abstraites additionnelles
}
Pourquoi les Interfaces Sont-Elles Nécessaires ?
Les interfaces permettent de séparer le quoi du comment. Elles activent le polymorphisme, favorisent le couplage faible et résolvent le problème de « l'héritage multiple » que Java ne prend pas en charge pour les classes.
Par exemple, un LecteurMultimedia peut avoir des sous-classes LecteurCD et LecteurDVD, chacune fournissant sa propre implémentation de jouer(). Si une classe avait besoin des deux capacités, Java interdirait l'héritage multiple de classes, mais une interface permet de combiner les comportements proprement.


De même, une classe Chien peut étendre Animal et implémenter une interface AnimalDeCompagnie pour satisfaire à la fois l'héritage et les obligations contractuelles.

Exemple d'Interface Java
Étape 1 : Écrivez le code suivant :
interface AnimalDeCompagnie {
void test();
}
class Chien implements AnimalDeCompagnie {
@Override
public void test() {
System.out.println("Méthode d'interface implémentée");
}
public static void main(String[] args) {
AnimalDeCompagnie p = new Chien();
p.test();
}
}
Étape 2 : Compilez et exécutez le programme pour voir la sortie.
Classe vs Interface
| Classe | Interface |
|---|---|
| Une classe peut être instanciée et peut contenir de l'état. | Une interface ne peut pas être instanciée et ne contient que des constantes et des signatures de méthodes. |
| Peut avoir des méthodes concrètes (implémentées). | Avant Java 8, ne pouvait pas avoir de méthodes concrètes ; depuis Java 8, peut contenir des méthodes default et static. |
Les modificateurs d'accès peuvent être private, protected ou public. | Tous les membres sont implicitement public (et static final pour les champs). |
Quand Utiliser une Interface vs une Classe Abstraite ?
- Classe Abstraite : Utilisez lorsque vous avez besoin d'une implémentation de base commune ou d'un état partagé pour des classes liées.
- Interface : Utilisez lorsque vous devez définir un rôle ou une capacité pouvant être adoptée par des classes non liées.
Faits Clés sur les Interfaces
- Une classe peut implémenter plusieurs interfaces, mais doit fournir une implémentation pour chaque méthode déclarée.
- Les interfaces ne peuvent pas être instanciées directement ; elles servent de contrats.
- Les références d'interface peuvent pointer vers toute classe implémentant l'interface.
- Une interface peut étendre une ou plusieurs autres interfaces.
- Les interfaces imbriquées sont autorisées à l'intérieur d'autres interfaces ou classes.
- Deux interfaces ne peuvent pas déclarer des méthodes avec le même nom mais des types de retour différents si une classe implémente les deux.
- Depuis Java 8, les interfaces peuvent contenir des méthodes
defaultetstatic.
Résumé
- Les interfaces définissent un contrat ; les classes fournissent l'implémentation.
- Toutes les méthodes d'interface sont implicitement
publicetabstract(saufdefaultoustatic). - Les interfaces ne peuvent pas être instanciées mais peuvent être référencées par des variables.
- Utilisez les interfaces pour atteindre le polymorphisme et contourner la limitation d'héritage unique de Java.
Java
- Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
- Classes Abstraites C# : Tutoriel Pratique avec Exemples de Code
- Méthode Java String length() : Comment obtenir la taille d'une chaîne (Exemple)
- Comprendre Java String.charAt() : Syntaxe, type de retour, exceptions et exemple pratique
- Maîtriser Java String.endsWith() : Comment vérifier les suffixes de chaînes avec exemples
- Interface vs Classe Abstraite en Java : Comment Choisir la Bonne Abstraction
- Lecture de Fichiers en Java avec BufferedReader – Guide Pratique avec Exemples
- Algorithme de tri par insertion en Java : exemple clair et guide pas à pas
- Comprendre les interfaces Java : Définitions, Usages et Bonnes pratiques