Looking for java Keywords? Try Ask4Keywords

Java LanguageMéthodes par défaut


Introduction

La méthode par défaut introduite dans Java 8 permet aux développeurs d'ajouter de nouvelles méthodes à une interface sans casser les implémentations existantes de cette interface. Il offre une certaine souplesse pour permettre à l'interface de définir une implémentation qui sera utilisée par défaut lorsqu'une classe qui implémente cette interface ne parvient pas à fournir une implémentation de cette méthode.

Syntaxe

  • public par défaut void methodName () {/ * method body * /}

Remarques

Méthodes par défaut

  • Peut être utilisé dans une interface pour introduire un comportement sans forcer les sous-classes existantes à l'implémenter.
  • Peut être remplacé par des sous-classes ou par une sous-interface.
  • Ne sont pas autorisés à remplacer les méthodes dans la classe java.lang.Object.
  • Si une classe implémentant plusieurs interfaces hérite des méthodes par défaut avec des signatures de méthode identiques pour chacune des interfaces, elle doit alors remplacer et fournir sa propre interface comme si elles n'étaient pas des méthodes par défaut (dans le cadre de la résolution de l'héritage multiple).
  • Bien que soient destinés à introduire un comportement sans casser les implémentations existantes, les sous-classes existantes avec une méthode statique avec la même signature de méthode que la méthode par défaut nouvellement introduite seront toujours interrompues. Cependant, cela est vrai même en cas d'introduction d'une méthode d'instance dans une super-classe.



Méthodes statiques

  • Peut être utilisé dans une interface, principalement destinée à être utilisée comme méthode utilitaire pour les méthodes par défaut.
  • Ne peut pas être remplacé par des sous-classes ou par une sous-interface (qui leur est masquée). Cependant, comme c'est déjà le cas avec les méthodes statiques, chaque classe ou interface peut avoir son propre nom.
  • Ne sont pas autorisés à remplacer les méthodes d'instance dans la classe java.lang.Object (comme c'est également le cas actuellement pour les sous-classes).



Vous trouverez ci-dessous un tableau résumant l'interaction entre la sous-classe et la super-classe.

- SUPER_CLASS-INSTANCE-METHOD MÉTHODE SUPER_CLASS-STATIC
SUB_CLASS-INSTANCE-METHOD annule génère-compiletime-error
SUB_CLASS-STATIC-METHOD génère-compiletime-error se cache



Vous trouverez ci-dessous un tableau résumant l'interaction entre l'interface et la classe d'implémentation.

- METHODE INTERFACE-DEFAULT METHODE INTERFACE STATIQUE
IMPL_CLASS-INSTANCE-METHOD annule se cache
IMPL_CLASS-STATIC-METHOD génère-compiletime-error se cache

Les références :

  • http://www.journaldev.com/2752/java-8-interface-changes-static-method-default-method
  • https://docs.oracle.com/javase/tutorial/java/IandI/override.html

Méthodes par défaut Exemples Liés