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 :

[héritage] Héritage et champs statiques.


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 27
    Par défaut [héritage] Héritage et champs statiques.
    Bonjour,

    Une question simple d'héritage :

    Comment accèder à un champ statique d'une classe enfant depuis une méthode de la classe parent:

    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
    22
    23
    24
    25
    26
    27
     
    public class testClasses {
     
        public static void main(String[] args) {  
            Class1.getToto();
            Class2.getToto();
            }
        }
     
    class Class1 extends Class3 {  
     
        public static int toto = 1;
        }
     
    class Class2 extends Class3 {  
     
        public static int toto = 2;
        }
     
    class Class3 {  
     
        public static void getToto() {
            System.out.println(toto);
            }
     
        public static int toto = 3;
        }
    Lors de l'execution du programme, celui-ci affiche "3" deux fois alors que j'aimerais qu'il affiche la première fois 1 puis 2.

    Je sais que l'emploi des champs statiques est à éviter mais dans le cas présent j'en ai besoin et puis cela peut toujours être utile à des fins éducatives.....

    Merci d'avance.
    Jean-Marc

  2. #2
    Membre confirmé Avatar de al85
    Profil pro
    Inscrit en
    Février 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 158
    Par défaut
    tu peux faire comme ca, ca marche :
    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
    22
    public class testClasses {
     
        public static void main(String[] args) { 
            (new Class1()).getToto();
            (new Class2()).getToto();
            }
        }
     
    class Class1 extends Class3 { 
        public Class1(){ toto=1; }
    }
     
    class Class2 extends Class3 { 
        public Class2(){ toto=2; }
    }
     
    class Class3 { 
        public static void getToto() {
            System.out.println(toto);
        }
        public static int toto = 3;
    }
    mais en l'occurence, les static ne servent a rien, avec ou sans ca fait la meme chose.


    par contre si tu mets ca dans ton main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Class1 c1 = new Class1();
        Class2 c2 = new Class2();
        c1.getToto();
        c2.getToto();
        c1.getToto()
    tu as un bel exemple du role du static.
    tu vois apparaitre 3 fois 2, parce que toto n'est cree que une seule fois en memoire, c'est donc toujours le meme qui est modifié

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 27
    Par défaut
    Merci pour ta réponse, mais ce n'est pas exactement ce dont j'ai besoin.

    Afin de m'expliquer voici un exemple:
    Imaginons une classe parent générique que nous appelerons Tables. Cette classe contient une série de méthodes communes de gestion de table (load, update, create) etc.
    J'ai d'autres classes qui descendent de Tables. (par exemple Currency, Country etc).

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    public class testClasses { 
     
        public static void main(String[] args) {  
     
            ResultSet x1 = Currency.getList(); // retourne les devises
            ResultSet x2 = Country.getList(); // retourne les pays
            ResultSet x3 = Currency.getList(); // retourne TOUJOURS les devises
     
            } 
        } 
     
    class Currency extends Tables {  
     
        public static String request = "SELECT * FROM CURRENCIES"; 
        } 
     
    class Country extends Tables {  
     
        public static String request = "SELECT * FROM COUNTRIES"; 
        } 
     
    class Tables {  
     
        public static ResultSet getList() { 
     
            if (request != null) {
                Statement xStatement = ....createStatement();
                return xStatement.executeQuery(request);
                };
            } 
     
        public static String request = null; 
        }
    Comme tu peux le constater il faut impérativement mémoriser la chaine de caractères dans la classe Enfant afin de pouvoir les différencier.

    J'espère être plus claire.

    Merci d'avance.
    Jean-Marc

  4. #4
    Membre expérimenté
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Par défaut
    En fait utiliser des staatic n'est pas adapté pour ça.
    Pourquoi veux tu absolument passer par des static ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 27
    Par défaut
    Bon si ce n'est pas possible en statique je vais essayer de faire autrement.

    Merci à tous ceux qui ont répondu à ce message.

    Bonne soirée

    Jean-Marc

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

Discussions similaires

  1. Héritage et champs statiques
    Par bomehc dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 26/02/2013, 09h55
  2. Héritage et champ statique
    Par Aedelon dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 10/08/2012, 14h36
  3. Réponses: 4
    Dernier message: 13/09/2006, 16h02
  4. [héritage] Héritage et champs statiques.
    Par salome dans le forum Langage
    Réponses: 2
    Dernier message: 02/04/2005, 00h11
  5. [héritage] héritage d'une variable static
    Par yaya44 dans le forum Langage
    Réponses: 14
    Dernier message: 29/09/2004, 13h36

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