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 :

Problème d'attribut statique et d'héritage


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Problème d'attribut statique et d'héritage
    Bonjour,

    J'ai créé en java une classe abstraite Message, avec plusieurs classes filles qui héritent de cette classe (en fait je dois manipuler plusieurs types de messages).

    Le problème est qu'il faudrait que chaque classes fille ait un attribut static ID, je cherche donc un moyen dans la classe Message de déclarer un attribut static ID qui devra obligatoirement être redéfini dans les classes filles mais je n'y arrive pas, car les attributs final doivent être définis en même temps que leur déclaration....

    Merci d'avance.

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


    Que veux-tu faire avec tout cela ?


    a++

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    En fait, je fait un client et un serveur qui communiquent, j'ai donc fait une classe abstraite (j'ai essayé avec une interface aussi) qui représente la structure de mes messages, et j'ai fait une classe fille (ou une implémentation) pour chaque messages, et je veux envoyer un entier qui va identifier le reste du message.

    Cet entier, c'est ID.

    Est-ce que j'ai été assez clair?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Un attribut ne peut pas être redéfini.

    Et ce qui est statique ne peut pas être redéfini non plus.

    Pour faire ça, il faut utiliser la redéfinition de méthodes, autrement dit définir getId() dans chaque classe fille.

    Par exemple en définissant dans uen classe abstraite mère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public abstract int getId();
    Ou alors en définissant une interface que tes classes doivent implémenter et qui déclare entre autre :

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Merci, mais l'id sera unique pour chaque classes héritées de Message, et non pas pour chaque instanciations de ces classes, il faudrai donc que la méthode getID() soit static....

  6. #6
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    Salut,
    je ne vois pas le problème.

    un ti exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class MessageParticulier extends Message{
     
    private static final int ID_MESSAGE_PARTICULIER = 14521766;
     
    public int getId() {
          return ID_MESSAGE_PARTICULIER; 
    }
     
    }

  7. #7
    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
    Une solution plus flexible serait peut être d'utiliser des classe interne : elles conservent un lien avec la classe englobante. Est ce que les sous type de Messages sont réellement quelque chose de neuf au niveau fonctionnelle ?

  8. #8
    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
    Si j'ai bien compris tu reçoit des messages du type :

    Message1_Commande
    Message2_Livraison
    Message3_Réclamation

    Tous cela est un message, mais il y a des plus, je vois pas en quoi l'id du message à un autre sens, après que n'importe qui ne puisse pas le modifier c'est autre chose, tu déclare le champ privé, et pas de méthode pour l'assigner. Une variable static final c'est une constante pour la classe, par classe il y en a une seule. Cela à peu d'intérèt je pense dans ton cas, pourquoi on utiliserais pas instanceof plutot que getId pour connaitre le type du Message.

    Tu pourrais par exemple avoir une classe :

    Message qui à une méthode getInstance. Cette méthode retourne un sous type, elle lit le champ Id. Si tu déclare le champ id comme protected ( et rien de plus : pas final ni statique ), tu en aura 1 pour chaque message, tu pourra le redéfinir dans la classe courante ou dans les classes filles, mais rien de plus.

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/12/2005, 16h44
  2. [css]problème d'attribution de classe dans deux listes
    Par Mitaka dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 24/11/2005, 18h05
  3. [POO] Heritage d'attribut statique surchargé !
    Par Jaxofun dans le forum Langage
    Réponses: 25
    Dernier message: 16/08/2005, 09h01
  4. Problème d'attribut de lecture seule sur des dossiers
    Par Redbull dans le forum Sécurité
    Réponses: 2
    Dernier message: 09/08/2005, 09h52
  5. [html][xsl]Problème valeur attribut html
    Par beho dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/04/2005, 13h37

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