Depuis la sortie de Java 9, existe-t-il de bonnes raisons d'utiliser des classes abstraites? On dirait que vous pouvez tout faire avec des interfaces à partir de maintenant, plus vous pouvez avoir l'héritage de multiplier avec des interfaces.Y at-il une bonne raison d'utiliser la classe abstraite avec de nouveaux ajouts aux interfaces dans Java 9?
- variables constantes
- méthodes abstraites
- méthodes par défaut
- Méthodes statiques
- méthodes privées
- privées méthodes statiques
Ai-je oublié quelque chose? Impossible de trouver une bonne raison, sauf, probablement, la rétrocompatibilité.
De nombreuses classes abstraites contiennent des champs de niveau instance et ne peuvent donc pas être converties en une interface équivalente. Peut-être que vous voulez forcer l'héritage d'une super classe particulière pour vous garantir un accès au niveau du paquet à certains de ses internes. Le deuxième cas est peut-être moins courant mais vous pouvez le voir utilisé dans certaines parties du JDK (par exemple, dans les API de sélection de socket). –