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"); }
}