Interface [Résolu]

Messages postés
845
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
1 août 2017
- - Dernière réponse : Ombitious_Developper
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
- 24 avril 2008 à 12:26
Bonjour à tous, ...

Est ce que vous pourriez m'en dire plus sur le fait qu'on soit obligé d'écrire toutes les méthodes d'une interface lorsqu'on se sert de celle ci. Par exemple, j'ai créer une interface contenant plusieurs méthodes (public void xxx ();) et j'aimerais ne pas être contraint de toutes les reécrires lorsque je me sers de l'interface en question (surtout lorsque je n'ai besoins que d'une ou deux de ces méthodes).

Merci ...
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
15838
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
73
3
Merci
Salut,

C'est le principe des interfaces : il s'agit d'un contrat à respecter afin de pouvoir l'utiliser dans toutes les situations. Il s'agit du principe de l'encapsulation : un utilisateur n'a besoin de connaitre que l'interface et non l'implémentation (ou les implémentations).
______________________________________
DarK Sidious

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
Messages postés
750
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 décembre 2008
15
3
Merci
Salut,
Souvent, on hérite de classes implémentant des interfaces, et il arrive que nous ne déclarions que certaines méthodes. Cela est normale car souvent ce sont des classes abstraites. Si tu ne veux pas tout implémenter, essai de voir si il n'existe pas une classe abstraite ayant implémenter une partie, ou une classe ayant tout impélementer, et tu surcharges certaines méthodes.

Sinon, tu seras forcement obligé de déclarer toutes ces méthodes car comme l'a justement dit Darksidious, c'est un contrat, un peu comme les fichiers .h en C/C++

Voili voilà

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de indiana_jules
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
30
3
Merci
Salut:

Utilises le patron [Adapter] qui offre une implémentation par défaut des méthodes d'une interface.

En Swing, toutes les [Listeners] qui sont des interfaces ont des adaptateurs (sauf bien sur ActionListener qui contient une seule méthode).

public interface I {
    public void doTaskX();
    public void doTaskY();
}

public class IAdapter implements I {
    public void doTaskX() {}

    public void doTaskY() {}
}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Ombitious_Developper
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
30
0
Merci
Salut:

[auteur/INDIANAJULES/242730.aspx indiana_jules] >> "essai de voir si il n'existe pas une classe abstraite ayant implémenter une partie, ou une classe ayant tout impélementer".

C'est une très bonne démarche.
Commenter la réponse de Ombitious_Developper
Messages postés
845
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
1 août 2017
1
0
Merci
Merci à vous, ..
Je penses que je vais créer ma propre classe abstraite (puisque j'ai créer l'interface en question parce que je ne la trouvais pas .. ) ou utiliser la méthode de Ombitious_Developper.
Commenter la réponse de didoux95
Commenter la réponse de indiana_jules
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
30
0
Merci
Salut:

ça me rappele:

                                    TableModel
                                             ^
                                             |
                                             |
                            AbstractTableModel

                                             ^

                                             |

                                             |

                             DefaultTableModel
Commenter la réponse de Ombitious_Developper