Différences entre classes abstraites et interfaces

- Une classe peut implémenter autant d'interfaces qu'elle veut.
- Mais elle ne peut étendre qu'une seule classe abstraite.

- Une classe abstraite peut avoir des méthodes nom abstraites.
- Une interfaces n'a que des méthodes abstraites.

- Une classe abstraite peut déclarer et utiliser des variables.
- Une interface ne peut déclarer que des constantes static final.

- Une classe abstraite peut déclarer ses méthodes public, protected, private, ou package (par défaut).
- Pour une interface, les méthodes sont implicitement public.

- Une classe abstraite peut définir des constructeurs.
- Une interface ne le peut  pas.