Java 8 : Méthodes par défaut (default) dans les interfaces — Compatibilité ascendante
Java 8 introduit les méthodes par défaut (default) dans les interfaces : implémentation fournie directement dans l'interface. Ajoutées pour la compatibilité ascendante : permettre d'ajouter des méthodes (ex: forEach) aux interfaces existantes (Collection, List) sans casser les implémentations.
Syntaxe
public interface Vehicle {
default void print() {
System.out.println("I am a vehicle!");
}
}
Conflit de multiples méthodes default
Si une classe implémente deux interfaces avec la même méthode default :
Solution 1 : Redéfinir dans la classe
public class Car implements Vehicle, FourWheeler {
public void print() {
System.out.println("I am a four wheeler car vehicle!");
}
}
Solution 2 : Appeler explicitement via super
public class Car implements Vehicle, FourWheeler {
public void print() {
Vehicle.super.print();
}
}
Méthodes static dans les interfaces (Java 8+)
public interface Vehicle {
default void print() { System.out.println("I am a vehicle!"); }
static void blowHorn() { System.out.println("Blowing horn!!!"); }
}
Appel : Vehicle.blowHorn().
Exemple complet
public class Java8Tester {
public static void main(String[] args) {
Vehicle vehicle = new Car();
vehicle.print();
}
}
interface Vehicle {
default void print() { System.out.println("I am a vehicle!"); }
static void blowHorn() { System.out.println("Blowing horn!!!"); }
}
interface FourWheeler {
default void print() { System.out.println("I am a four wheeler!"); }
}
class Car implements Vehicle, FourWheeler {
public void print() {
Vehicle.super.print();
FourWheeler.super.print();
Vehicle.blowHorn();
System.out.println("I am a car!");
}
}
Sortie
I am a vehicle!
I am a four wheeler!
Blowing horn!!!
I am a car!
Les méthodes default et static permettent d'évoluer les interfaces sans casser le code existant, tout en offrant des implémentations par défaut et utilitaires partagés.
Java
- Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
- Commentaires Java : Types, utilisation et bonnes pratiques
- Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
- Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
- Classes et méthodes abstraites en Java : guide complet
- Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
- Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
- Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
- Annotations Java expliquées : types, placement et exemples pratiques