IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[interface declaration]


Sujet :

Langage Java

  1. #1
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut [interface declaration]
    Bonjour, juste une question qui me passe dans la tete, voila java.util.List est une interface, mais alors pourquoi on peut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List liste = new ArrayList();
    Bon est en admetant que liste devienne une ArrayList, quel est l'interet de ce genre de declaration... on declare les obbjet par leur interface pour quelle raison????

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    POO
    Une ArrayList est un fait une List avec un comportement (interne) specifique. Les autres parties du programme ne verront qu'une List et si j'aimais du decide de changer son comportement le code à changer sera minimal. (Dans le cas ou la manipulation offerte par l'interface List est suffisante bien sur)

    Les autres parties n'ont pas à savoir ton implementation de la liste.

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    On peut faire cela car la classe ArrayList implémente l'interface List.

    Citation Envoyé par agougeon
    quel est l'interet de ce genre de declaration... on declare les obbjet par leur interface pour quelle raison????
    L'intérêt c'est de faire abstraction de l'implémentation.

    L'interface List décrit un ensemble de méthode pour gérer des listes, et ArrayList correspond à une implémentation basé sur un tableau.

    En utilisant l'interface List, tu conserves une possibilité de changer l'implémentation de ta liste si le besoin s'en fait sentir. Tu pourrais par exemple utiliser une LinkedList à la place...

    Je ne sais pas si je suis clair ???

    a++

  4. #4
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut
    Citation Envoyé par adiGuba
    L'intérêt c'est de faire abstraction de l'implémentation.
    Ok merci mais pourtant ma liste est bien instancié avec les methode d'ArrayList ou du moins les principal (celle que declare l'interface...).
    Si j'ai bien compris cela revien a utiliser l'implementation d'ArrayList pour uniquement les methode declarer dans l'interface List?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    Citation Envoyé par agougeon
    Si j'ai bien compris cela revien a utiliser l'implementation d'ArrayList pour uniquement les methode declarer dans l'interface List?
    Euh la formulation est bizare... Je dirais plutot que tu n'utilisera que les methodes déclarées par l'interface List et que celles ci auront effectivement l'implementation faite par ArrayList.
    enfin, j'espere que tu me comprends, également.

  6. #6
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut
    oui oui tres bien merci.. mais alors comment apres redefinir une methode de l'interface dans le code?
    un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    List liste = new ArrayList();
    liste.getMethodeArrayList(Obj){
    //TODO
    }
    et elle se lance direct ou faut la relancer apres.....
    trop des questions metaphysique ce soir

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    Si tu utilise ArrayList c'est à priori que tu est content de son implemenation, donc je ne vois pas ce que tu veux changer. (ArrayList implements List)

    Sinon tu peux toujour te faire un nouveau type de List pour toi effectivement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class MyList implements List {
    //attributs
    //constructeur
    //methodes de l'interface List à redefinir (oui, toutes)
    }
    Si tu ne veux pas avoir à tous redefinir
    Tu peux passer par AbstractList (cad extends AbstractList)qui redefinit pour toi presque toutes les fonctions...

    Et dans ce cas la tu feras :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List liste = new MyList();

  8. #8
    Membre habitué Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Points : 147
    Points
    147
    Par défaut
    oui merci je connai c technique mais c pour savoir si on peut redefinir une methode à la volé... dans juste apres la declaration... c juste a titre informatif... et si oui comment?
    Merci

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    Sans redefinir une classe (anonymes ou pas), non. Car tu ne peux changer le comportemant d'une classe de l'API comme cela ou alors cela serait le *****.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] [Interface] ComboBox à plusieurs colonnes
    Par mtl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/03/2004, 17h35
  2. [VB6] [Interface] Horloge 7 segments
    Par selenay dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/10/2002, 16h15
  3. interface utilisateur avec OpenGL
    Par demis20 dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/10/2002, 12h27
  4. Declaration Type ds une procedure
    Par Qwazerty dans le forum Langage
    Réponses: 6
    Dernier message: 28/08/2002, 09h09
  5. Declarer une dll Delphi ?
    Par DelphiCool dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 10h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo