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 :

[Débutant] Explication implémentation interface


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 77
    Points : 35
    Points
    35
    Par défaut [Débutant] Explication implémentation interface
    Bonjour à tous,

    alors voilà je lis en ce moment le cours "Développons en Java" disponible sur ce site

    Et il y a une petite phrase que je ne comprends pas :

    L'implémentation d'une interface définit un cast : l'implémentation d'une interface est une forme d'héritage. Comme pour l'héritage d'une classe, l'héritage d'une classe qui implémente une interface définit un cast implicite de la classe fille vers cette interface. Il est important de noter que dans ce cas il n'est possible de faire des appels qu'à des méthodes de l'interface. Pour utiliser des méthodes de l'objet, il faut définir un cast explicite : il est préférable de contrôler la classe de l'objet pour éviter une exception ClassCastException à l'éxecution
    Pourriez vous m'expliquer à l'aide d'un exemple ce que signifi ce petit paragraphe ?

    Merci beaucoup

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Je suis pas sûr que ce soit ça, mais ca veut dire que tu peut accéder à un objet implémentant l'interface par le type de l'interface. Donc tu n'es pas obligé de savoir le type réel de l'objet pour l'utiliser.

    Un petit exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    interface Tester {
       public void test();
    }
     
    class ATester implements Tester{
       public void test(){
          //Fais quelque chose
       }
    }
     
    class BTester implements Tester{
       public void test(){
          //Fais quelque chose
       }
    }
     
    class Autre {
       public void do(Tester t){
          t.test();
       }
    }
    Dans ta classe Autre, tu n'as pas besoin de connaître le type du tester, tu emploie directement l'interface. Mais tu pourras employer seulement les méthodes de l'interface.

  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,


    Je pense qu'il veut dire qu'un objet qui implémente une interface peut être caster dans une référence de l'interface de manière implicite.

    Par exemple si tu as une interface comme celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface MonInterface {
    	public void methode();
    }
    Et que tu as une classe qui l'implémente, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class MonObjet implements MonInterface {
    	public void methode() {
    		System.out.println("methode()");
    	}
    	public void autreMethode() {
    		System.out.println("autreMethode()");
    	}
    }
    Tu peux utiliser la classe MonObjet de manière standard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MonObjet mo = new MonObjet();
    mo.method();
    mo.autreMethod();
    Mais tu peux également l'utiliser en tant que MonInterface de manière tout à fait transparente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MonInterface mi = new MonObjet();
    mi.method();
    Par contre tu es du coup limité aux méthodes définies par l'interface, et tu ne peux donc pas appeler la méthode autreMethode() sans caster explicitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((MonObject)mi).autreMethode();
    a++

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 77
    Points : 35
    Points
    35
    Par défaut
    Merci beaucoup pour vos explications.
    J'y vois plus claire, comme quoi un exemple est parfois mieux qu'un long discours

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

Discussions similaires

  1. [débutant] explication de syntaxe
    Par cyrill.gremaud dans le forum Langage
    Réponses: 4
    Dernier message: 13/11/2006, 14h19
  2. Demande explications classes interfaces
    Par schnito dans le forum Langage
    Réponses: 17
    Dernier message: 10/10/2006, 04h44
  3. Réponses: 9
    Dernier message: 09/05/2006, 16h11
  4. [Débutant] Lancer une interface sous éclipse
    Par bonnefr dans le forum SWT/JFace
    Réponses: 11
    Dernier message: 11/05/2004, 15h59
  5. [Débutant] explication Servlet-TOMCAT
    Par davycrocket dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 10/05/2004, 11h13

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