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 :

definition de class dans une Interface


Sujet :

Langage Java

  1. #1
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut definition de class dans une Interface
    Bonsoir,
    je travail sur un Project, ou je trouve souvent, des Interfaces(signature dinterface) qui hebergent des classes.
    Personellement je trouve cette approche un peu bizare, car jen est jamais vu dans ma carierre de developpeur.
    Est ce que quelqun peut m expliqué ce phänomene?

    Merci

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    Par défaut
    Tu peux lire les tutoriaux Java dont un ici http://jmdoudoux.developpez.com/cour...a/chap-poo.php

  3. #3
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut
    Bonjour,
    jai bien lu larticle mais ca ne reponds toujour pas ma question.
    Du point de vue best practices, est ce que ca a un sens de definir une class dans une interface du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      public interface MyInterface{
         public void do();
     
         public class ClazzIntern{
            public void HelloHorld(){
               System.out.println( "Bla" );
           }
        }
     
     }
    merci

  4. #4
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 605
    Points : 15 644
    Points
    15 644
    Par défaut
    J'avoue que ça me laisse moi aussi assez perplexe quant a l'utilité de la chose, mais je ne vois pas en quoi ca peut-être gênant non plus vu que les classe internes ne sont pas impactées par le polymorphisme.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Points : 402
    Points
    402
    Par défaut
    Citation Envoyé par Uther Voir le message
    J'avoue que ça me laisse moi aussi assez perplexe quant a l'utilité de la chose, mais je ne vois pas en quoi ca peut-être gênant non plus vu que les classe internes ne sont pas impactées par le polymorphisme.
    Déclarer une classe à l'intérieur d'une interface n'est pas vraiment comme une classe interne normal! c'est une classe internepublic static final, c'est comme déclarer une constante sans rajouter le public static final
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    interface IMath {
     float PI= 3.141592f;
     class Trigonometrie {
       //...
     }
    }
    Cela te permettra de déclarer des objet de type a++

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    on peux utiliser ça, par exemple, pour y stocker des enums spécifiques ou des helper classes utiles à l'interface. Mais il est vrai, c'est assez rare. Un exemple typique: l'interface java.util.Map.Entry, c'est une interface qui est définie dans une autre interface.

  7. #7
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    hélas je n'ai que deux exemples trop complexes pour être mis ici mais je vais essayer d'en expliquer le principe.
    Une des (multiples) raisons de mettre un type à l'interieur d'un autre type est d'exprimer un couplage.

    donc soit une interface
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    interface Realisant {
          Reacteur[] reacteurs() ;
          // autres méthodes
    }
    maintenant la classe Reacteur (abstraite en l'occurence) utilise
    dans son code (constructeur ou méthode) un paramètre du type
    de l'interface Realisant.

    pourquoi ne pas mettre la classe dans l'interface puisqu'ici les deux codes sont étroitement couplés l'un à l'autre ?

    j'ai un autre cas qui ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    interface A {
       class UneClasse {
       }
     
       UneClasse méthode() ;
    }
     
    interface B extends A {
       class AutreClasse extends UneClasse {
       }
     
      AutreClasse méthode() ;
    }
    qui revient à forcer la covariance.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Points : 402
    Points
    402
    Par défaut
    Je me suis trompé alors une classe dans une interface n'est pas final puisque'on peut la dériver

    Je rectifie une classe à l'intérieur d'une interface est public static par défaut

  9. #9
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut
    merci beacoup pour vos infos.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 156
    Points : 190
    Points
    190
    Par défaut
    Dans les enums on peut aussi définir des comportement particulier, c'est peut être plus près de ce que tu cherche. Si c'est nécessaire, le comportement peut être propre à chaque instance.

    Pourquoi ne pas plutôt hériter d'une classe abstraite pour accéder à cette classe interne static ?

Discussions similaires

  1. Definition d'une classe dans une structure
    Par circe dans le forum Langage
    Réponses: 7
    Dernier message: 02/12/2009, 17h54
  2. Class dans une Class
    Par Math75 dans le forum C++
    Réponses: 27
    Dernier message: 06/08/2004, 17h38
  3. [Reflection] Classes implémentant une interface
    Par thibaut dans le forum API standards et tierces
    Réponses: 17
    Dernier message: 29/07/2004, 14h57
  4. classe dans une classe ?
    Par tut dans le forum UML
    Réponses: 23
    Dernier message: 25/06/2004, 15h00
  5. Tableau dans une interface idl
    Par Polochon2001 dans le forum CORBA
    Réponses: 2
    Dernier message: 14/05/2004, 09h44

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