human
Quelle est la différence entre interface et classe abstraite en Java ?
gpt
Une interface Java est une liste de méthodes qui une classe doit implémenter. Une classe abstraite Java, quant à elle, est une classe qui ne peut pas être instanciée et qui peut contenir une ou plusieurs méthodes abstraites, c'est-à-dire des méthodes qui n'ont pas de corps. 

En d'autres termes, une interface est une spécification de méthodes que les classes doivent suivre, tandis qu'une classe abstraite fournit une partie de l'implémentation et des fonctionnalités qui peuvent être partagées par plusieurs classes filles. 

Les classes Java ne peuvent étendre qu'une seule classe abstraite, mais peuvent implémenter plusieurs interfaces. Les interfaces Java peuvent contenir des constantes et des méthodes par défaut, tandis qu'une classe abstraite peut avoir des variables d'instance, des constructeurs et des méthodes concrètes avec des implémentations.