Accéder au contenu principal
Documents
Tableaux JavaProgrammation orientée objet en JavaTraitement des fichiers en JavaIntroduction To JavaLes bases du langage JavaMots-clés Java

interface Mot-clé en Java

Le mot-clé interface en Java est utilisé pour déclarer un type spécial de classe qui ne contient que des méthodes abstraites, des méthodes par défaut, des méthodes statiques et des variables finales. Les interfaces permettent de réaliser l'abstraction et l'héritage multiple en Java.

Utilisation

Les interfaces sont utilisées pour spécifier un ensemble de méthodes qu'une classe doit implémenter. Ils sont particulièrement utiles pour définir un contrat auquel plusieurs classes peuvent adhérer, en s'assurant qu'elles fournissent des fonctionnalités spécifiques.

Syntax

interface InterfaceName {
    // constant fields
    // abstract methods
    // default methods
    // static methods
}
  • InterfaceName: Le nom de l'interface.
  • Champs constants : Les champs déclarés dans une interface sont implicitement public, static, et final.
  • Méthodes abstraites : Méthodes sans corps qui doivent être implémentées par les classes qui implémentent l'interface.
  • Méthodes par défaut : Méthodes avec un corps qui fournissent une implémentation par défaut.
  • Méthodes statiques : Méthodes avec un corps qui appartiennent à la classe d'interface elle-même.

Exemples

Exemple 1 : Interface de base

interface Animal {
    void eat();
    void sleep();
}

class Dog implements Animal {
    public void eat() {
        System.out.println("Dog is eating");
    }

    public void sleep() {
        System.out.println("Dog is sleeping");
    }
}

public class InterfaceExample {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat();
        dog.sleep();
    }
}

Dans cet exemple, l'interface Animal déclare deux méthodes abstraites : eat et sleep. La classe Dog implémente l'interface Animal et fournit des implémentations concrètes pour ces méthodes.

Exemple 2 : Interface avec méthode par défaut

interface Vehicle {
    void start();
    default void stop() {
        System.out.println("Vehicle is stopping");
    }
}

class Car implements Vehicle {
    public void start() {
        System.out.println("Car is starting");
    }
}

public class DefaultMethodExample {
    public static void main(String[] args) {
        Car car = new Car();
        car.start();
        car.stop();
    }
}

Ici, l'interface Vehicle comprend une méthode par défaut stop. La classe Car implémente l'interface Vehicle et fournit une implémentation de la méthode start. La méthode par défaut stop est héritée et peut être utilisée telle quelle.

Exemple 3 : Interface avec méthode statique

interface Calculator {
    static int add(int a, int b) {
        return a + b;
    }
}

public class StaticMethodExample {
    public static void main(String[] args) {
        int result = Calculator.add(5, 3);
        System.out.println("Sum: " + result);
    }
}

Cet exemple montre une interface Calculator avec une méthode statique add. La méthode statique peut être appelée directement en utilisant le nom de l'interface sans avoir besoin d'une instance.

Conseils et bonnes pratiques

  • Responsabilité unique: Gardez les interfaces concentrées sur une seule responsabilité. Ils sont ainsi plus faciles à comprendre et à mettre en œuvre.
  • Conventions d'appellation: Utilisez des noms significatifs pour les interfaces. Souvent, les noms d'interface sont des adjectifs ou des noms qui décrivent le comportement ou le rôle, comme Runnable, Serializable, ou List.
  • Évitez la surcharge: Évitez de surcharger les méthodes dans les interfaces afin de préserver la clarté et la simplicité.
  • Utilisez les méthodes par défaut à bon escient: Les méthodes par défaut peuvent être utiles pour assurer la compatibilité ascendante, mais utilisez-les avec parcimonie pour éviter de compliquer l'interface.
  • Interfaces de documents: Documentez clairement l'objectif et le comportement attendu de chaque méthode de l'interface afin de guider les personnes chargées de la mise en œuvre.
  • Préférez la composition à l'héritage: Utilisez des interfaces pour définir les capacités et préférez la composition à l'héritage pour obtenir un code flexible et facile à maintenir.

Concepts supplémentaires

Interfaces multiples

En Java, une classe peut implémenter plusieurs interfaces, ce qui lui permet d'hériter des méthodes abstraites de toutes les interfaces implémentées.

interface Movable {
    void move();
}

interface Stoppable {
    void stop();
}

class Robot implements Movable, Stoppable {
    public void move() {
        System.out.println("Robot is moving");
    }

    public void stop() {
        System.out.println("Robot has stopped");
    }
}

public class MultipleInterfacesExample {
    public static void main(String[] args) {
        Robot robot = new Robot();
        robot.move();
        robot.stop();
    }
}

Dans cet exemple, la classe Robot met en œuvre les interfaces Movable et Stoppable, en fournissant des implémentations pour les méthodes définies dans les deux interfaces.

Apprendre l'essentiel de Java

Développez vos compétences en Java à partir de la base et maîtrisez les concepts de programmation.
Commencez à apprendre gratuitement