Tutoriel JAVA N°14 : nouveautés interfaces JAVA 8 (‘default’ , ‘static’)

/////Tutoriel JAVA N°14 : nouveautés interfaces JAVA 8 (‘default’ , ‘static’)

java-9.jpg Avec Objis, spécialiste Java depuis 2005, maîtrisez l’évolution de la notion d’Interface Java dans sa version 8. Comprenez la notion de méthode par défaut, ainsi que le mot clé ‘default’. Comprenez cette technique , centrale dans l’ajout de nouvelles fonctionalités dans Java 8, comme les streams.

ASTUCE –> Soyez informé de la mise à jour ou création de tutos sur objis.com.

Auteur

Douglas MBIANDOU. Président Objis . Concepteur formation ‘Nouveautés Java 8 et 9’

Prérequis

Tutoriel ‘interface Java’.

Objectifs

Comprendre le nouveau mot clé ‘default’ java 8′ et le contexte de son arrivée

Comprendre la notion de méthode par défaut dans une interface

Comprendre la valeur ajoutée de la méthode par défaut

Comprendre les nom de méthode par défaut à éviter

Comprendre les méthodes statiques dans une interface Java 8

Programme

Introduction

Partie 1 : interface avant Java 8

Partie 2 : mise en oeuvre Interface par défaut (java 8)

Partie 3 : implémenter 2 interfaces dans Java 8

Partie 4 : précédence de l’héritage

Partie 5 : méthodes de la classe Object

Partie 6 : méthodes statiques dans une interface

Conclusion

Votre avis nous interesse

Cerfification

Durée

25 min

Introduction

QUESTION : quelles différences entre l’interface List de java 7 et l’interface List de java 8 ?

methode-par-defaut-java-8-1

Les classes implémentant List et compilées avec Java 7 et antérieures parviendront-elles à compiler avec Java 8 ? A quoi sert le nouvel opérateur ‘default’ de Java 8 ?

Découvrez pas à pas, avec Objis la notion de méthode par défaut dans une interface Java 8. Identifier 6 notions clés.

Partie 1 : Interface avant Java 8

TELECHARGEZ le projet Eclipse initial

GestionFormations-Interface-v1

Ce projet, que nous allons modifier par la suite met en évidence 3 savoir-faire élémentaires liées à l’interface Java « traditionnelle » (jusqu’à java 7):

— 1) codage d’une interface (ici IPersonnel)

— 2) implémentation d’une interface par une classe (ici Employe)

— 3) codage d’une méthode prenant en paramètre une interface (ici méthode listerFormation() de la classe ServiceFormation)

interface-java-8-tutoriel-0-projet

Codage Interface

interface-java-8-tutoriel-1

Codage classe implémentant Interface

interface-java-8-tutoriel-2

 

interface-java-8-tutoriel-3

Codage méthode prenant paramètre Interface

interface-java-8-tutoriel-3bis

Démonstration

interface-java-8-tutoriel-0

 

interface-java-8-tutoriel-17

 

Partie 2 : Mise en oeuvre Interface par défaut (java 8)

BESOIN : on veux faire évoluer l’interface IPersonnel en ajoutant une méthode (identite()) mais sans obliger les classe implémentant IPersonnel (comme Employe) à redéfinir la nouvelle méthode.

Ajoutez une méthode identite() retournant une chaîne de caractère

interface-java-8-tutoriel-4

Constatez immédiatement que Eclipse déclenche une ‘croix rouge’ sur la classe Employe , car celle-ci ne respecte plus le contrat qu’elle s’est pourtant engagée à respecter :

interface-java-8-tutoriel-5

pour être désormais conforme au contrat, la classe Employe va devoir implémenter la nouvelle méthode identite(). Nous sommes donc condamné à retoucher le code de Employe…sauf si on ajoute le mot nouveau (java 8) mot clé default dans la déclaration de la méthode identite () de l’interface :

interface-java-8-tutoriel-6

Notez que cela a pour effet immédiat de supprimer la ‘croix rouge’ présente dans la classe Employe ! Désormais le code de Employe compile…

interface-java-8-tutoriel-7

…mais pas encore celui de l’interface !

Mettez le cursus souris au dessus du mot surligné pour identifier des suggestions :

interface-java-8-tutoriel-8

sélectionner ‘Add body’

interface-java-8-tutoriel-9

Hé oui ! vous ne révez pas ! vous avez bien vu : à partir de Java 8 il est possible de coder des méthodes dans les interfaces…un peux comme dans une classe abstraite !

interface-java-8-tutoriel-10

2 avantages :

1) on n’a pas eu besoin d’implémenter obligatoirement la deuxième méthode dans la classe Employe

2) on peut appeler la méthode identite() à partir de Employe() . C’est l’implémentation par défaut qui sera appelée . et sans avoir à modifier les classes qui implémentent cette interface !

interface-java-8-tutoriel-11

interface-java-8-tutoriel-12

Ajouter désormais une implémentation spécifique de identite() dans employe()

interface-java-8-tutoriel-13

 

interface-java-8-tutoriel-14

 

interface-java-8-tutoriel-15

 

interface-java-8-tutoriel-16

 

interface-java-8-tutoriel-17

 

Correction

GestionFormations-Interface-v2

Partie 3 : implémenter 2 interfaces dans Java 8

Supprimez l’implémentation de identite() dans Employe

interface-java-8-tutoriel-19

La classe employe n’a donc plus de methode identite()
interface-java-8-tutoriel-20

Ajoutez une interface ISport

interface-java-8-tutoriel-18

Expliquez pourquoi le code suivant génère une erreur de compilation

interface-java-8-tutoriel-21

 

interface-java-8-tutoriel-22

Expliquez le lien avec le fait que java n’autorise pas l’héritage multiple.

Comment gérer ce problème ?

Correction

GestionFormations-Interface-v3

Partie 4 : Précédence de l’héritage

Ici nous faisons l’hypothèse que :

La classe Employe n’implémente aucune interface,

La classe Employe possède une class identite()

interface-java-8-tutoriel-23

La classe Manager hérite de Employe et implémente IPersonnel

interface-java-8-tutoriel-24

Quel est le résultat du code suivant :

interface-java-8-tutoriel-25

Expliquez

Correction

GestionFormations-Interface-v4

Partie 5 : méthodes de la classe Object

Analysez le code suivant :

interface-java-8-tutoriel-26

Quel problème ?

interface-java-8-tutoriel-27

Expliquez

Correction

GestionFormations-Interface-v5

Partie 6 : Méthodes statiques dans une interface

ANalysez le code suivant :

interface-java-8-tutoriel-29

Expliquez

Analysez le code et résultat suivant :

interface-java-8-tutoriel-29

Expliquez

Demo

GestionFormations-Interface-v6

Conclusion

Vous avez touché du doigt le mécanisme de méthode par défaut de Java 8. Cette approche a permis d’ajouter par exemple dans l’interface List de nouveaux services (Streams) sans impacter du code codé avec versions java 7 et inférieure utilisant déjà l’interface List.

Votre avis nous intéresse

Vous avez remarqué une erreur ? Vous avez une recommandation pour améliorer ce tuto ? Vous souhaitez nous encourager à partager notre savoir-faire technique et pédagogique ?

 

Donner votre avis sur ce Tuto objis.com

 

Professionnels : maîtrisez les nouveautés Java 8 et 9 !

java-9.jpg
A travers notre nouvelle formation Nouveautés Java 8 et 9 (durée 4 jours) conçue par l’auteur de ce tutoriel, découvrez par la pratique le nouveau système de Modules Java 9 ainsi que des caractéristiques de Java 8 (Streams, Lambda, Optional…).

Un sérieux atout pour votre employabilité et l’évolution de votre carrière professionnelle !

2018-01-25T07:47:26+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java