2017-10-02 9 views
3

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?

Java SE 9: Interfaces

  • 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é.

+5

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). –

Répondre

2

En effet, vous manque quelque chose:

  • variables non constantes
  • protégé et les méthodes de paquet-privé

En général, vous ne devez pas utiliser une fonctionnalité juste parce que vous pouvez. En particulier, soyez prudent avec l'héritage multiple. Cela peut compliquer les choses très rapidement.