Interface avec les méthodes par défaut vs classe Abstraite Java 8

Que Java 8 permet par défaut de mise en œuvre de méthodes dans l'interface appelée Méthodes Par Défaut, il semble y avoir une confusion entre quand dois-je utiliser un abstract class.

Donc quand dois-interface avec les méthodes par défaut et quand doit une classe abstraite être utilisé? Sont les classes abstraites toujours utile dans ce scénario?

  • Peut-être que vous ne pouvez pas toujours avoir les champs, les méthodes privées, etc. dans les interfaces, tandis que vous pouvez dans la classe abstraite?
  • Je me demandais à propos de ce sujet avant, maintenant je suis clair.Grâce à @Narendra Pathai . Je voudrais ajouter un lien d'un autre thread posées par vous concernant le même sujet, que ces deux ont été mes doutes. stackoverflow.com/questions/19998309/...
  • Vous pouvez trouver un joli post sur celui-ci: blog.codefx.org/java/everything-about-default-methods
  • Vous pouvez encore parfois, le code d'une classe de base comme une interface, même si la classe de base a l'état. C'est juste que l'interface doit définir les setters et getters pour l'état et les classes concrètes ont à mettre en œuvre et de définir le champ. Une restriction sur ce est que dans une classe abstraite, le haricot de propriété ne peut être privé ou protégé. Dans les interfaces seulement les méthodes publiques. Une raison pour vous d'utiliser une classe de base abstraite est si vos classes ont une propriété qui doit être privés ou protégés.