Je vois son écrit dans la plupart des endroits-
"All of the methods in an interface are abstract."
Mais une interface peut également contenir default methods
et static methods
et des corps de méthodes existent pour les méthodes par défaut et les méthodes statiques.
alors toutes les méthodes d'interface sont-elles abstraites?
A partir de Java 8, une interface peut également contenir des méthodes par défaut et des méthodes statiques ainsi que des méthodes abstraites. Des corps de méthodes existent pour les méthodes par défaut et statiques.
L'une des modifications les plus importantes apportées à la conception de Java 8 concerne le concept d'interfaces . Avant Java 7, nous ne pouvions avoir que des déclarations de méthode dans Les interfaces. Mais à partir de Java 8, nous pouvons avoir des méthodes par défaut et Méthodes statiques dans les interfaces.
Méthode d'interface par défaut
Pour créer une méthode par défaut dans l'interface, nous devons utiliser le mot-clé «Default» avec la signature de la méthode.
Méthodes d'interface statique
Les méthodes statiques sont similaires aux méthodes par défaut, sauf que nous ne pouvons pas les remplacer par Dans les classes d'implémentation. Cette fonctionnalité nous aide à éviter les résultats indésirables en cas de mauvaise mise en œuvre dans les classes enfants.
Pour plus de check out this
c'est correct
Toutes ses méthodes sont abstraites, indépendamment de ses modificateurs d'accès.
Une explication parfaite par @coder :
Une interface est comme une classe "purement" abstraite. La classe etallde ses méthodes sont abstraites. Une classe abstraite peut avoir implémenté des méthodes Mais la classe elle-même ne peut pas être instanciée (utile pour L'héritage et après DRY).
Pour une interface, puisqu'il n'y a pas du tout d'implémentation, elles sont Utiles pour leur fonction: un contrat. Si vous implémentez l'interface , Vous devez alors implémenter les méthodes dans l'interface.
La différence est donc qu'une classe abstraite peut avoir implémenté des méthodes Alors qu'une interface ne le peut pas.
Ils sont séparés parce qu’une classe peut implémenter plusieurs interfaces . Java et C # restreignent une classe à une seule classe Inhérente. Certaines langues vous permettent d'hériter de plusieurs classes Et vous pouvez accomplir le travail d'une interface via une classe "Purement" abstraite. Mais l'héritage multiple a ses problèmes, À savoir le redoutable problème de diamant
Consultez la documentation d'Oracles sur Méthodes et classes abstraites.
Toutes les méthodes des interfaces Java sont abstraites. Si elles sont explicitement déclarées statiques, elles ne sont pas abstraites.
Toutes les méthodes d'une interface sont abstraites. Cette instruction est vraie. Il est obligatoire pour une interface de disposer de méthodes abstraites uniquement pour appliquer l'héritage multiple.
Ceci est faux selon l'ouvrage de Jeanne Boyarsky & Scott Selikoff, OCA: Guide d'étude du programmeur I pour Java SE 8, programme associé certifié Oracle®, examen 1Z0-808.
. . . car avant Java 8, toutes les méthodes d'interface étaient supposées abstraites. Puisque Java 8 inclut maintenant les méthodes par défaut et statiques Et qu'elles ne sont jamais abstraites, vous ne pouvez pas supposer que le modificateur abstrait sera implicitement appliqué à toutes les méthodes par le compilateur. (page 346 du livre)