Interface

Résolu
Signaler
Messages postés
845
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
1 août 2017
-
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
-
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 ...

7 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
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
Messages postés
750
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 décembre 2008
20
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
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
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() {}
}
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
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.
Messages postés
845
Date d'inscription
mardi 25 avril 2006
Statut
Membre
Dernière intervention
1 août 2017
2
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.
Messages postés
750
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 décembre 2008
20
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut:

ça me rappele:

                                    TableModel
                                             ^
                                             |
                                             |
                            AbstractTableModel

                                             ^

                                             |

                                             |

                             DefaultTableModel