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 :

Visibilité d'une variable protected


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 109
    Par défaut Visibilité d'une variable protected
    Bonjour,
    J'ai vraiment un problème avec la visibilité du protected. Dans la FAQ java c'est écrit:
    "rien" ou défaut Les variables, méthodes ou classes définies sans modificateur sont accessibles par toute classe appartenant au même package. Attention : les variables sans modificateur ne sont pas accessibles aux classes fille définies dans un autre package.
    protected Les variables, méthodes ou classes définies comme protégées ne sont accessibles que par les classes filles et classes du même package.

    Une variable protected est comme "rien" ou défaut pas accessible aux classes fille définies dans un autre package.

    Quel est la différence entre rien et protected ?

    Merci

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 50
    Par défaut
    Bonjour,

    Les variables "rien" ne sont pas toujours accessibles aux classes filles. Alors que les variables protected le sont toujours.

  3. #3
    Membre éprouvé Avatar de zhouyu
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 90
    Par défaut
    Si les définitions sont juste :

    - "rien" les variables,méthodes,etc.. sont accessibles par toutes les classes du même package, SEULEMENT du même package.

    - "protected" même package PLUS les classes enfants, même les enfants d'un autre package

    L'intérêt du protected c'est surtout pour laisser l'accès aux classes enfants.

    Personnellement je ne me suis jamais servis du "rien" ou "défaut" je met en "public" dans ce cas là. Mais bon j'ai fais peu de Java :p.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 109
    Par défaut
    Citation Envoyé par zhouyu Voir le message
    - "protected" même package PLUS les classes enfants, même les enfants d'un autre package
    Ben mon problème c'est que justement ça ne compile pas !

    L'exemple suivant le montre:

    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
    package p;
    public class Parent {
    	int xDefaut = 11;
    	protected int xProtected = 9;
    	public int xPublic = 10;	
    }
    
    package other;
    import p.*;
    public class Enfant extends Parent {
    	public static void main(String[] args) {
    		p.Parent p = new p.Parent();
    		System.out.println("Public" + p.xPublic);
    		// ne compile pas pourquoi ??
    		 System.out.println("xProtected" + p.xProtected);
    		 //ne compile pas, c'est normal !
    		 System.out.println("xDefault" + p.xDefaut);
    	}
    }
    Qui m'explique ? merci

  5. #5
    Membre chevronné
    Homme Profil pro
    Java
    Inscrit en
    Mai 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 170
    Par défaut
    Ton context est totalement différent ;-)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 109
    Par défaut
    Citation Envoyé par kinaesthesia Voir le message
    Ton context est totalement différent ;-)
    Je ne comprends pas l'explication.

  7. #7
    Membre chevronné
    Homme Profil pro
    Java
    Inscrit en
    Mai 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 170
    Par défaut
    Ta méthode main est static ce qui signifie qu'elle n'est pas dans le même contexte que ta classe Enfant ni même celle de Parent que tu la déclares dans ton fichier Enfant.java ou Parent.java.

    De plus tu déclares un objet Parent et tu essayes d'accéder à une de ses variables protected. Ce n'est pas parce que ton objet est instancié dans une classe fille que tu vas avoir accès à ses variables protégées.

    Si tu veux une explication plus banale, tu peux te dire que cette méthode n'a pas de classe etpeux être déclarée n'importe tout.

    Si tu veux accéder à ta variable protected, il te faudra créer une méthode qui n'est pas static dans ta classe Enfant et l'utilisé directement et non pas instancié un objet Parent puisque par héritage ton objet Enfant est automatiquement un objet parent.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/03/2009, 09h22
  2. Visibilité d'une variable
    Par dragonno dans le forum Langage
    Réponses: 5
    Dernier message: 06/03/2009, 09h00
  3. visibilité d'une variable
    Par greg08 dans le forum Langage
    Réponses: 1
    Dernier message: 07/11/2008, 17h45
  4. [Tableaux] visibilité d'une variable dans une fonction
    Par grinder59 dans le forum Langage
    Réponses: 2
    Dernier message: 10/05/2007, 18h06
  5. Visibilité d'une variable
    Par nenoeil dans le forum Langage
    Réponses: 3
    Dernier message: 09/07/2004, 14h14

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