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 :

protected et private


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 97
    Par défaut protected et private
    Bonjour,

    Est-ce qu'une variable peut être protected et en même temps private. Si oui comment ça s'écrit?

    Merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par jerdel Voir le message
    Est-ce qu'une variable peut être protected et en même temps private
    Est-ce qu'une variable peut être à la fois (1) uniquement visible par la classe où elle est définie, et (2) également visible par les classes qui en dérivent et les autres classes du package ?
    Bah, euh, nan

    => que voulais-tu dire par "private" et "protected" ? que cherches-tu à faire ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 97
    Par défaut
    En fait le prof me donne un énoncé et il dit que toutes les variables sont protégées. Et il dit aussi que l'une d'entre elles doit être traitée par un modifieur (mutateur) et 2 autres par un accesseur.
    Ca implique qu'il y a des variables qu'elles sont à la fois protected et private. Non?

  4. #4
    Membre Expert
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Par défaut
    à moins de me trompé une variable peut être Protected (voir même Public), mais avoir des getters/setters (mutateurs/accesseurs). Certes c'est contre productif, fait faisable. Donc je ne vois pas vraiment où est le problème.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 97
    Par défaut
    Merci pour vos réponses. Donc si j'ai compris, je peux utiliser un mutateur et un modifieur avec un protected mais cela ne sert à rien. C'est ça? Et qu'est-ce qu'un package?

  6. #6
    Membre expérimenté Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Par défaut
    Citation Envoyé par jerdel Voir le message
    Merci pour vos réponses. Donc si j'ai compris, je peux utiliser un mutateur et un modifieur avec un protected mais cela ne sert à rien. C'est ça? Et qu'est-ce qu'un package?
    C'est pas idiot, c'est juste pas conventionnel comme comportement

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par jerdel Voir le message
    Merci pour vos réponses. Donc si j'ai compris, je peux utiliser un mutateur et un modifieur avec un protected mais cela ne sert à rien. C'est ça? Et qu'est-ce qu'un package?
    Qu'est-ce qu'un package... euh... mince je ne suis pas sure de savoir l'expliquer succintement
    Pour s'y retrouver sur notre disque dur, nous rangeons nos fichiers dans des dossiers, avec une arborescence plus ou moins profonde (ex : documents>photos>2009>annivBidule).
    Eh bien on fait pareil avec les classes Java, pour s'y retrouver on les range dans des packages (ex : java.util contient tout un tas de classes "utiles" pour de la programmation courante et contient plusieurs sous-packages plus spécifiques, comme java.util.zip ou java.util.regex).

    Avant de définir une classe, tu dois indiquer à quel package elle appartient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    package com.monprog.test;
    class Test1 {...}
    et ensuite tu peux utiliser cette classe en l'appelant par son nom complet (com.monprog.test.Test1) ou en effectuant un import préalable (import com.monprog.test.Test1; ou import com.monprog.test.*).



    Pour revenir à la question :
    Définir des accesseurs sur une variable protected n'est pas idiot, ni inutile.
    Si l'on veut qu'une variable définie dans une classe soit visible par les classes qui en héritent, alors il faut la déclarer protected (ou carrément public bien sûr). Si de plus on veut pouvoir accéder à cette variable depuis un autre package, il va falloir des accesseurs public.

    Le problème c'est que Java ne permet pas de différencier visibilité par héritage et visibilité par package :
    - private => visible par la classe uniquement
    - protected => visible par la classe, par ses classes filles, et par les autres classes du même package
    - public => visible par tout le monde
    Du coup il peut sembler inutile de définir des accesseurs sur une variable protected (définie ainsi parce qu'on a besoin de l'utiliser par héritage) puisque de toutes façons toutes les autres classes du même package y auront librement accès (sauf que, comme je l'ai dit plus haut, depuis un autre package les accesseurs public seront nécessaires).

    Pour comparer, en C# les deux notions sont séparées :
    - private => visible par la classe uniquement
    - protected => visible par la classe et par ses classes filles
    - internal => visible par la classe et par les autres classes du même package
    - public => visible par tout le monde
    et on peut cumuler protected et internal si besoin...

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

Discussions similaires

  1. Différence entre public, protected et private
    Par pierrot10 dans le forum Débuter
    Réponses: 2
    Dernier message: 29/05/2013, 08h46
  2. override de public à protected ou private
    Par gere34 dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 26/11/2012, 13h13
  3. [POO] Problème: public, protected et private PHP5
    Par fleur_de_rose dans le forum Langage
    Réponses: 5
    Dernier message: 07/05/2006, 19h26
  4. Protected / Public / Private....
    Par GOUGOU1 dans le forum C++
    Réponses: 16
    Dernier message: 17/03/2005, 22h04
  5. Private - Protected
    Par Argonz dans le forum C++
    Réponses: 11
    Dernier message: 06/08/2004, 16h21

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