Sobes.tech
Middle

Quelle est la différence entre une classe abstraite et une interface?

sobes.tech IA

Réponse de l'IA

Classe abstraite — c'est une classe qui peut contenir des méthodes implémentées ainsi que des méthodes abstraites (sans implémentation). Elle sert de base à l'héritage et peut contenir un état (champs).

Interface — c'est un contrat qui définit un ensemble de méthodes sans implémentation (dans la compréhension classique). La classe qui implémente l'interface doit implémenter toutes ses méthodes.

Principales différences :

  • La classe abstraite peut contenir une implémentation et un état, l'interface — seulement des signatures de méthodes (dans certains langages, les interfaces peuvent contenir des méthodes par défaut).
  • Une classe ne peut hériter que d'une seule classe abstraite, mais peut implémenter plusieurs interfaces.
  • La classe abstraite définit une implémentation partielle, l'interface — seulement le contrat.

Exemple en Java :

abstract class Animal {
    void eat() { System.out.println("Mangeant"); }
    abstract void sound();
}

interface Flyable {
    void fly();
}

class Bird extends Animal implements Flyable {
    void sound() { System.out.println("Chant"); }
    public void fly() { System.out.println("Volant"); }
}