Dans Java 8, l'implémentation de la méthode default
est introduite. Ma question est de savoir pourquoi il est nécessaire d'avoir le mot-clé default
dans le nom de la méthode / signature. Pourquoi ne peut-il pas se passer du mot-clé default
comme une implémentation de méthode habituelle?
4 Réponses :
Dans Java 8, la fonctionnalité «Méthode par défaut» ou (Méthodes Defender), qui permet au développeur d'ajouter de nouvelles méthodes aux interfaces sans casser leur implémentation existante. Il offre la flexibilité pour permettre à l'interface de définir une implémentation qui sera utilisée par défaut dans une situation où une classe concrète ne parvient pas à fournir une implémentation pour cette méthode.
Vous pouvez consulter l'URL ci-dessous pour en savoir plus. https://dzone.com/articles/interface-default-methods-java
La question n'était pas de savoir quel était le mot-clé par défaut, mais de savoir pourquoi il était nécessaire.
Cela rend l'intention claire. Vous ne pouvez pas accidentellement créer une implémentation par défaut pour une méthode. Tout comme les méthodes abstraites
nécessitent le mot-clé, au lieu d'être simplement des méthodes sans implémentation.
Une précaution de sécurité pour les programmeurs imprudents.
Remarque: il s'agit de spéculation, mais de spéculation éclairée. Ce que dit la réponse de @ Kayaman est probablement vrai.
Java vise à être aussi rétrocompatible que possible. Si vous n'avez pas inclus le mot-clé par défaut, du code potentiellement invalide, peut-être écrit par erreur, dans une version java précédente se compile désormais sur Java 8+. Cela peut être considéré comme une rupture de compatibilité ascendante.
Il convient de noter que puisque les interfaces Java 8 prennent également en charge les méthodes statiques
. Laisser de côté le mot-clé default
ouvre la porte à l'ambiguïté: une déclaration de méthode dans une interface sans modificateur serait-elle implicitement statique (comme les constantes), ou implicitement par défaut ? Dans l'état actuel des choses, tout est clair.
Je suppose que vous voulez dire des implémentations par défaut des méthodes d'interface?