<!-- Raz le brol -->

Sommaire du document

Le 07/03/11 13:24 : @Override et l'interface en Java

[râlerie]
D'ju il manque l'annotation @implement en Java
[/râlerie]

En effet, si je déclare une méthode dans une interface, une erreur de compilation est générée si cette méthode n'est pas implémentée dans la classe qui implémente cette interface (je ne respecte pas le contrat défini par l'interface).

Et où est le problème ?

Mais si par la suite nous supprimons une méthode de notre interface ?

Le compilateur ne sait pas que la méthode implémentée dans la classe correspondait à un ancien contrat avec l'interface, et n'est plus d'aucune utilité (nous ne nous attardons pas ici au choix de la suppression d'une méthode publique et aux conséquences sur le refactoring).

Et @Override ?

Lorsque nous redéfinissons (“override” (en français, « surcharge »)) dans une classe une méthode définie dans une super-classe, nous devrions toujours l'annoter avec @Override. De cette manière, la maintenance du code est facilitée, car nous avons des erreurs de compilation si cette méthode n'existe plus en amont dans la hiérarchie de cette classe, si le nom est modifié, etc.

Pourquoi Steph râle sur @Override ?

Dans le cas d'une classe qui fournit l'implémentation d'une méthode définie dans une classe parent abstraite, il n'est pas logique de marquer cette méthode avec l'annotation @Override, car il n'y a pas encore eu d'implémentation. Pourtant c'est ce que je fais; dans ce cas, j'utilise l'annotation @Override, car il n'existe pas d'alternative permettant de forcer l'erreur de compilation en cas de mauvaise maintenance.

Une annotation @implement serait la bienvenue dans ce cas, et serait plus appropriée au niveau sémantique.

Si nous considérons une interface comme une classe abstraite dont toutes les méthodes sont publiques et abstraites, la première implémentation d'une méthode définie dans l'interface serait annotée @implement, et si elle est surchargée par la suite, la surcharge serait annotée @Override.

« Raz-le-Brol... »

 

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Notes

  1.  override : correspond à « surcharge” en français

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-4442
Document créé le 11/06/10 12:31, dernière modification le Vendredi 17 Juin 2011, 12:12
Source du document imprimé : http://www.gaudry.be/nav/raz-le-brol.html Document affiché 1 fois ce mois de Juin.
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Apparence (afficher)
Stats (afficher)
15832 documents
452 astuces.
549 niouzes.
3099 definitions.
447 membres.
8115 messages.

Document genere en :
0,32 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
Pour te donner tous les conseils que je te prodiguais, il a fallu aussi que je me trompe, et cela m'est arrivé souvent.

Marc Levy [Extrait de Et si c'était vrai...]
 
l'infobrol
Nous sommes le Dimanche 03 Juin 2012, 11:34, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)