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 :

Visibilité des classes et de méthodes, différence?


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 58
    Points : 49
    Points
    49
    Par défaut Visibilité des classes et de méthodes, différence?
    Bonjour,
    je débute en java que j'essai de comparer avec le C++ où on retrouve des similitudes mais je rencontre un problème de compréhension avec le code suivant(qui n'est pas de moi):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import java.applet.*;
    import java.awt.*;
     
    public class HelloHub extends Applet
    {
       public void paint(Graphics g)
       {
           g.drawString("Hello les visiteurs du Hub !!!", 30, 30);
       }
    }
    je ne comprend pas pourquoi sur est précédé de 'public'.
    Le mot public devant 'class HelloHub extends Applet' ne veut pas déjà dire que toute méthodes et attributs de la classe HelloHub seront public par défaut?(et si j'ai bien compris public est le mot par défault si on met rien donc quel pourrait être l'intérêt de le mettre devant la class HelloHub et la fonction paint.

    Je ne comprend pas non plus comment la fonction g.drawString s'execute alors que la fonction paint n'est pas appelé.

    merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    le public devant la classe indique que la classe est publique. Ca signifie que ce genre de code:
    ou ce genre de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class MonHub extends HelloHub{
    ...
    }
    est légitime partout (moyennant bien sur les import). Si elle était protégée, par exemple, seules les classes du même package y aurait accès. Si elle était privée, seule la classe contenante y aurait accès (ça n'a d'intérêt que pour les inner class)

    quand au public de la méthode, il se rapporte bien à la méthode elle même. Il faut donc distinguer les droit de "voir" une classe et, une fois qu'on vois la classe, les droits de "voir" des méthodes qui en font partie. Ainsi une classe est bien souvent publique, mais elle a bien souvent des méthodes publique, des méthodes privées et des méthodes protégées. Quand aux méthodes, il vaut mieux, d'une manière générale, éviter d'utiliser la visibilité par défaut, car ce n'est ni du public ni du protégé. C'est une visiblité package, d'un intérêt assez limité.

    Et non, ce n'est pas "public" par défaut.

  3. #3
    Membre confirmé Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    456
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2003
    Messages : 456
    Points : 482
    Points
    482
    Par défaut
    Bonjour,

    Il y a des éléments de réponse à ta question dans la FAQ : Que signifient les mots-clés public, private et protected ?

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Contrairement aux C++ où les éléments sont regroupé selon leurs visibilités, en Java on spécifie la visibilité devant chaque élément (type, constructeur, méthode ou attribut).

    Si tu ne précise pas de visibilité devant un élément, c'est une visibilité par défaut qui sera utilisé (en général la visibilité "package-only").

    a++

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 58
    Points : 49
    Points
    49
    Par défaut
    merci pour vos réponses

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

Discussions similaires

  1. Visibilité des classes dans la procedure performDefaultImplementation
    Par guydelaciste dans le forum Développement OS X
    Réponses: 2
    Dernier message: 17/03/2014, 15h21
  2. Réponses: 0
    Dernier message: 04/09/2013, 09h09
  3. Réponses: 17
    Dernier message: 14/01/2011, 16h56
  4. Visibilité des classes
    Par zax-tfh dans le forum ASP.NET
    Réponses: 0
    Dernier message: 14/12/2009, 23h02
  5. Réponses: 4
    Dernier message: 27/07/2007, 18h18

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