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 et classe


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 109
    Points : 49
    Points
    49
    Par défaut Interface et classe
    Bonjour;
    il existe dans le jdk les interfaces comme et les classes comme ...
    Quel est la difference entre les deux?

    et sa donne quoi lorsqu'on ecrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Collection c = new ArrayList();
    qu'est ce que sa veut dire??


    Merci encore

  2. #2
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    La réponse est dans le concept d'héritage introduit par la conception orientée objet.

    Une interface permet de définir certaines propriétés/méthodes à un type d'objet.

    Pour Collection par exemple il est définit des méthodes comme remove ou size.
    Toutes les classes implémentant cette interface définira ces méthodes, sans quoi elles ne pourraient pas implémenter cette interface.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 109
    Points : 49
    Points
    49
    Par défaut
    Merci pour la réponse, mais que voulait vous dire par:
    Toutes les classes implémentant cette interface définira ces méthodes

  4. #4
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    ça veut dire que toute classe implementant l'interface collection devra avoir comme methode remove et size.

  5. #5
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    Par exemple si tu vas voir (j'ose vous tutoyer?) l'api de la classe ArrayList tu peux voir que la classe implémente l'interface Collection (tu peux le voir au sous-titre All implemented interfaces).
    Concrètement dans la source de la classe ArrayList, l'implémentation se traduit par le mot-clé implements suivi de la ou des interface(s) qui doit(vent) être implémentée(s). Ce mot-clé implements suit directement le nom de la classe.

    Ensuite dans l'api tu peux voir que les méthodes déclarées dans l'interface Collection, se trouvent également dans la classe ArrayList!

    Ce qui veut dire concrètement que (par exemple) le code suivant va te retourner dans les deux cas la grandeur de tes collections alors que tu peux faire des tas de choses différentes que ce soit avec une ArrayList ou une HashSet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Collection ar = new ArrayList();
    Collection hm = new HashSet();
    ar.size();
    hm.size();

  6. #6
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 109
    Points : 49
    Points
    49
    Par défaut
    mais si on parlé en français ; ArrayList est quoi pour Collection?
    d'après ce que je crois avoir compris: collection contient plein de classes parmi elles ArrayList qui utilise certianes methodes ou propriété de Collection...
    et si c'est bien ça, il y a quoi d'autre comme classes par exemple qui appartiennent à Collection???

    Merci

  7. #7
    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,



    Une interface ne fait que décrire un ensemble de méthode pour un mecanisme, sans fournir aucune implémentation.

    Par exemple l'interface Collection décrit tout un ensemble de méthode pour gérer des collections de données (ajout/suppression d'élément, etc...).

    Si chaque méthode est décrite, rien n'est préciser concernant le mecanisme interne de ces méthodes...


    La classe ArrayList implémente cette interface (et même l'interface List d'ailleurs), et permet de gérer un tableau facilement.
    Mais il existe d'autre implémentation avec leurs spécificité (LinkedList qui gère une liste chainé, les Set qui n'accepte pas de doublons...).

    Tu utiliseras ces différentes implémentations selon tes besoins (pour plus de détail, voir la FAQ : Structures de données -Tableaux et collections).


    Maintenant pourquoi utiliser ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Collection c = new ArrayList();
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List list = new ArrayList();
    Tout simplement pour ne pas te baser sur une implémentation particulière, mais pour rester le plus général possible.

    Si demain tu t'aperçois que tu dois changer d'implémentation, il te suffit de changer l'instanciation de ta collection, sans avoir à impacter tut ton code...



    De même si tu écris une méthode du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void printAll(ArrayList list) {
    	Iterator iterator = list.iterator();
    	while (iterator.hasNext()) {
    		System.out.println(iterator.next());
    	}
    }
    Tu limites l'utilisation de ta méthode aux ArrayList, alors que si tu utilisais une Collection, ta méthode serait utilisable par toutes les implémentations possibles...


    Grosso-modo, en utilisant l'interface du écris du code qui n'est pas spécifique à une implémentation particulière, ce qui permet une meilleure évolution et une meilleure réutilisation du code...


    J'espère avoir été clair...

    a++

Discussions similaires

  1. Heritage et Interface de classe
    Par Seth77 dans le forum C#
    Réponses: 10
    Dernier message: 16/02/2007, 13h17
  2. [POO] Différence entre Interface et classe Abstraite
    Par viviboss dans le forum Langage
    Réponses: 7
    Dernier message: 29/11/2006, 17h39
  3. Interface ou classe abstraite ?
    Par Premium dans le forum Langage
    Réponses: 8
    Dernier message: 21/02/2006, 11h23
  4. transtypage d'interface en classe
    Par T0ch dans le forum Langage
    Réponses: 5
    Dernier message: 27/05/2004, 20h42

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