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 :

Les modificateurs : private, protected, public, static


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut Les modificateurs : private, protected, public, static
    Je comprend bien que :
    1) Un objet private n'est qu'accessible à l'intérieur de la classe qui le contient
    2) Un objet protected est accessible dans tout le package et dans les sous classes
    3) Un object Public est bien sûr visible partout.
    4) Je sais qu'un membre static appartient à la classe et non a l'instance de la classe par exemple
    public class Animal {

    int age;
    boolean vivant;
    static nbreDePate=4;
    protected boolean queue=true;

    }
    Voici ma préocupation :

    Par rapport à l'accessibilité quelle est la différence réelle entre un objet static (nbreDePate), un objet protected (queue) et un objet qui n'a pas de modificateur tel que (age), parce que tous sont accessibles dans tout le package, selon moi, ils ont presque le même rôle.

    Merci

  2. #2
    Membre chevronné
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 158
    Par défaut
    Attention à ne pas faire de confusion entre le mot-clé static et les modificateurs d'accès.


    Un membre d'une classe peut être :
    • lié à la classe => static
    • lié à l'instance => pas de mot clé


    Un membre d'une classe peut également être :
    • visible par la classe uniquement => private
    • visible par tout le package => pas de mot-clé
    • visible par tout le package, et par les sous-classes dans le cadre de l'héritage (*) => protected
    • visible par tout le monde => public

    (*) "dans le cadre de l'héritage" = une sous-classe peut accéder à un membre protected qu'elle a hérité d'une classe mère, mais elle ne peut pas accéder à un membre protected hérité par une autre sous-classe ; voir suite de la discussion


    Les deux notions peuvent être combinées comme on veut:
    • int a => lié à l'instance, visible par tout le package
    • static int b => lié à la classe, visible par tout le package
    • private int c => lié à l'instance, visible par la classe uniquement
    • private static int d => lié à la classe, visible par la classe uniquement
    • protected int e => lié à l'instance, visible par tout le package et par les sous-classes
    • protected static int f => lié à la classe, visible par tout le package et par les sous-classes
    • public int a => lié à l'instance, visible par tout le monde
    • public static int g => lié à la classe, visible par tout le monde

  3. #3
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Pas de modificateur, donc visibilité package.

    Bis

    Ter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    protected boolean queue=true;
    Protected, donc visibilité pour uniquement cette classe et ses filles éventuelles.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

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

  4. #4
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    Voici un petit exemple qui j'éspère, t'aidera à mieux voir le rôle du "Static".

    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
     
    static int nombreStatic = 10
    int nombre = 10
     
    //Considérons une classe A qui possède une méthode Add() de la sorte :
     
    void Add(){
        nombreStatic++;
        nombre++;
    }
     
    //et une méthode print :
     
    void print(){
        System.out.println("valeur de nombreStatic : "+nombreStatic+"<<>> valeur de nombre : "+nombre);
    }
     
    A1 = new A();
    A2 = new A();
     
    //ici nombreStatic = nombre = 10
     
    A1.add();
    A2.add();
     
    A1.print();
    A2.print();
    le résultats sera :

    valeur de nombreStatic : 11 <<>> valeur de nombre : 11
    valeur de nombreStatic : 12 <<>> valeur de nombre : 11
    j'éspère que c'est assez clair...

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    @michon: Euh, c'est ni juste ni clair, ton exemple.

    Je pense que pour l'instant, il faut comprendre que
    - private, protected et public sont des modificateurs d'accès, mutuellement incompatibles.
    - static n'est pas un modificateur d'accès, il n'est incompatible avec rien. Son seul contraire, "pas static" consiste à ne pas dire que c'est static.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    -1 michon !
    c'est pas en donnant un exemple qui compile pas bien et un résultat qui n'est pas bon que tu va aider mesken à comprendre !

    Avec ton code le résultat sera :
    valeur de nombreStatic : 12 <<>> valeur de nombre : 11
    valeur de nombreStatic : 12 <<>> valeur de nombre : 11
    pour que ca marche, il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ....
    A1 = new A();
    A2 = new A();
     
    A1.add();
    A1.print();
    A2.add();
    A2.print();
    ....
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Protection d'un tableau public static final
    Par sachem dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 07/02/2009, 21h20
  2. Private, Protected & Public (les 3P)
    Par birt1976 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 10/10/2008, 14h05
  3. differences static final - private protected
    Par fantomas261 dans le forum Langage
    Réponses: 2
    Dernier message: 27/05/2007, 12h24
  4. Public Private Protected
    Par Sabrina_of_darkness dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2006, 22h21
  5. Protected / Public / Private....
    Par GOUGOU1 dans le forum C++
    Réponses: 16
    Dernier message: 17/03/2005, 22h04

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