@simad2288
  @simad2288
Simad | Tutoriel JAVA8 N°2: Default Method Definition in Interface | Java 8 @simad2288 | Uploaded July 2018 | Updated October 2024, 6 hours ago.
Parmi les nouveautés apportées par Java 8, on en trouve deux qui concernent les interfaces : les méthodes statiques et les méthodes par défaut.

Les méthodes statiques définies sur les interfaces fonctionnent exactement de la même façon que celles portées par les classes, il n'y a donc pas grand-chose à en dire. En revanche, les méthodes par défaut risquent de modifier assez profondément notre façon de concevoir nos API.

En Java 7 et antérieur, une méthode déclarée dans une interface ne fournit pas d'implémentation. Ce n'est qu'une signature, un contrat auquel chaque classe dérivée doit se conformer en fournissant une implémentation propre.

Mais il arrive que plusieurs classes similaires souhaitent partager une même implémentation de l'interface. Dans ce cas, deux stratégies sont possibles (celui qui a dit "copier/coller" viendra me voir à la fin du billet pour une retenue) :

Factoriser le code commun dans une classe abstraite, mais il n'est pas toujours possible de modifier la hiérarchie des classes
Extraire le code commun dans une classe utilitaire, sous forme de méthode statique (ex: Collections.sort()).
On conviendra qu'aucune des deux n'est réellement satisfaisante. Heureusement, Java 8 nous offre maintenant une troisième possibilité.

En Java 8
Java 8 propose en effet une solution plus propre : permettre aux méthodes déclarées dans les interfaces d'avoir une implémentation !
Là, tout le monde se frappe le front en disant, bon sang mais c'est bien sûr, pourquoi n'y a-t-on pas pensé avant ? Tout simplement parce que les concepteurs du langage voulaient absolument éviter les problèmes d'héritage en diamant, bien connu des développeurs C++. On verra (plus loin) que ce n'est finalement pas un problème en Java.
Tutoriel JAVA8 N°2: Default Method Definition in Interface | Java 8Tutoriel JAVA8 N°10: Stream avancé partie 2 Transformation(MapToDdouble - MapToInt)tutorial Fiverr : Créer un gig (job) dans Fiverr .indexOf method in an object array JavaScript typescripttutorial Fiverr : inscription dans Fiverr partie 2.TypeScript: how to compare two datesDesign view is not getting displayed in my Android Studio????dropdown list with ngFor and enum AngularVisual Studio Code Extension - Auto ImportAngular CLI Create new projectHow to change the date format in the datepicker (bsDatepicker) of Angular htmlThe connection to the server localhost:8080 was refused – did you specify the right host or port?

Tutoriel JAVA8 N°2: Default Method Definition in Interface | Java 8 @simad2288

SHARE TO X SHARE TO REDDIT SHARE TO FACEBOOK WALLPAPER