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

avec Java Discussion :

Variable statique et l'héritage


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut Variable statique et l'héritage
    Bonjour tous le monde,

    Je souhaite savoir si les variables statiques sont hérité par les classes files d'une classe mère?

    Merci de me donné un exemple concret.

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par naou18 Voir le message
    Je souhaite savoir si les variables statiques sont hérité par les classes files d'une classe mère?
    Tu devrais faire un petit exemple pour voir la réponse par toi-même. Néanmoins, la réponse à ta question est : non, les éléments static ne s'héritent pas. Pourquoi veux tu faire cela ?
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Robin56 Voir le message
    Néanmoins, la réponse à ta question est : non, les éléments static ne s'héritent pas. Pourquoi veux tu faire cela ?
    Un petit exemple, tel que le mien, prouve justement le contraire -_-°.

    Le problème étant toujours le même : personne ne sait jamais ce que ça veut dire, hériter de quelque chose.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Un petit exemple, tel que le mien, prouve justement le contraire -_-°.

    Le problème étant toujours le même : personne ne sait jamais ce que ça veut dire, hériter de quelque chose.
    Et question alors tant qu'à dire des bêtises. Si je fais la manipulation suivante :
    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
    public class A {
       public static String message = "Bonjour !";
    }
     
    public class B extends A {
     
      public static void main(String[] args) {
        message = "toto";
        new C();
      }
    }
     
    public class C {
      public C() {
        System.out.println(A.message);
      }
    }
    Quel sera la valeur de mon System.out ?
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  5. #5
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut
    Voila un exemple qui ressemble un peu à ce que j'ai rencontrer dans un QCM :
    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
    public class A{
    static int i = 1;
     
    show(){
    syso("la valeur de i"+ i);
    }
    }
    }
    public class B extends A{
    int i=1;
    show(){
    syso("la valeur de i"+ i);
    }
    }
    main(String args[]){
    A a = new B();
    a.show();
    }
    j'attend la réponse à la question de Robin56
    Merci de votre aide.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par naou18 Voir le message
    Voila un exemple qui ressemble un peu à ce que j'ai rencontrer dans un QCM :
    La situation est différente.

    Ici la classe B, qui hérite de A, hérite bel et bien de la variable i de la classe A.

    Seulement, B définit sa propre variable i, de même nom. Puisqu'elle a le même nom, elle masque la variable i de la classe A.
    Le contexte de B ne lui permet donc plus d'accéder à la variable i de la classe A. Seulement à sa propre variable i. Pour accéder à celle de la classe A, elle va devoir faire comme le reste du monde :
    En l'occurrence, sa méthode show() n'accède qu'à une variable i, donc dans son contexte, donc celle de B.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Quel sera la valeur de mon System.out ?
    Par bonne foi, je réponds sans essayer de lancer l'exemple : cela affichera "toto" (sans les guillemets.)

    La variable message, variable statique de la classe A, est bel et bien héritée par la classe B. Ce qui signifie que cette variable fait partie du contexte de B, hérité du contexte de A, et donc que B peut lire et écrire dans cette variable qui est à A.

    Donc la ligne suivante compile et modifie la variable en question :

    S'il n'y avait pas héritage, elle ne compilerait pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Par bonne foi, je réponds sans essayer de lancer l'exemple : cela affichera "toto" (sans les guillemets.)
    J'étais justement entrain de faire le test. C'est donc bien ce que je pensais. A la différence d'une variable non static, l'on est en train de modifier la valeur de la classe mère.

    Tu as donc ta réponse naou18.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  9. #9
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Oui, et les variables non-statiques aussi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class A {
     
      protected static final String MESSAGE = "Bonjour !";
     
    }
     
    public class B extends A {
     
      public static void main(String[] args) {
        // variable MESSAGE visible, donc héritée.
        System.out.println(MESSAGE);    
      }
     
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [Débutant] héritages de propriétés friend/public et variables statiques/modules
    Par billybobbonnet dans le forum Développement Windows
    Réponses: 0
    Dernier message: 05/09/2014, 13h03
  2. Héritage et variable statique
    Par darkrojo dans le forum Débuter
    Réponses: 9
    Dernier message: 10/08/2011, 13h52
  3. [PHP 5.0] [POO] Héritages de variables statiques
    Par LogistiX dans le forum Langage
    Réponses: 7
    Dernier message: 21/01/2009, 18h07
  4. Utilisation d'une variable statique
    Par kurkaine dans le forum C++Builder
    Réponses: 6
    Dernier message: 14/06/2006, 13h49
  5. Exportation de variable statique
    Par Laurent Gomila dans le forum C++
    Réponses: 16
    Dernier message: 31/08/2005, 16h32

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