Partage
  • Partager sur Facebook
  • Partager sur Twitter

[débutant] Question sur l'accessibilité

Sujet résolu
    24 novembre 2014 à 9:38:01

    Bonjour,

    J'apprends le langage Java par le biais du tuto sur ce site. J'avais déjà fait pas mal de C++ avant et je ne comprend pas un truc sur l'accessibilité en java (public, protected, private).

    J'ai 3 classes:

    ville
    capitale (qui hérite de ville)
    main

    mon main est déclarer comme ceci (j'ai laissé par défaut):

    public class class1 {
    	public static void main(String[] args) throws InterruptedException {
    		// TODO Auto-generated method stub

    dans ma classe ville, j'ai déclarer mes variables comme ceci:

    protected int nbHabitants = 0;
    protected String nom = "null";
    protected String pays = "null";

    mon problème: je peux modifier mes variables directement dans le main ! et je ne comprend pas pourquoi ??

    // dans le main
    maVille.nbHabitants = 5; // fonctionne
    maCapitale.nbHabitants = 5; // fonctionne aussi


    Merci :)

    PS: en cherchant sur internet, j'ai lu que les variables déclarées protected étaient accessibles aux classes d'un package, mais je ne comprend pas vraiment ce qu'ils veulent dire...


    • Partager sur Facebook
    • Partager sur Twitter
    J'achète, et je vends...
      24 novembre 2014 à 9:43:06

      Bonjour. Ta as trouve la réponse toi même. Dans le cours que tu suis, il y a un chapitre sur les packages
      • Partager sur Facebook
      • Partager sur Twitter
        24 novembre 2014 à 9:49:49

        Effectivement, c'était le chapitre d'après (oops) :p

        Merci et désolé !

        • Partager sur Facebook
        • Partager sur Twitter
        J'achète, et je vends...
          24 novembre 2014 à 9:52:26

          Bonjour,



          "PS: en cherchant sur internet, j'ai lu que les variables déclarées protected étaient accessibles aux classes d'un package, mais je ne comprend pas vraiment ce qu'ils veulent dire..."

          ça veut dire que tu n'ai pas obligé de créer des getters/setters pour avoir accès à tes variables.Car dans le cas d'une variable privée, privée par le fait qu'elle n'est pas accessible aux autres classes, des getters/setters sont obligatoire pour pouvoir y accéder.

          • Partager sur Facebook
          • Partager sur Twitter
            24 novembre 2014 à 9:56:00

            Bonjour.

            Il y a, en plus de public/protected/private, l'accessibilité par défaut appelée "package".

            Si je ne me trompe pas, protected inclus "package".

            Pour des tests bidons sur d'autres fonctionalités ce genre de visibilité est pratique, mais en réalité on utilise surtout private public et quelques fois protected mais rarement celle par défaut.

            • Partager sur Facebook
            • Partager sur Twitter
            Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
              24 novembre 2014 à 10:20:24

              Taimpus a écrit:

              "PS: en cherchant sur internet, j'ai lu que les variables déclarées protected étaient accessibles aux classes d'un package, mais je ne comprend pas vraiment ce qu'ils veulent dire..."

              ça veut dire que tu n'ai pas obligé de créer des getters/setters pour avoir accès à tes variables.Car dans le cas d'une variable privée, privée par le fait qu'elle n'est pas accessible aux autres classes, des getters/setters sont obligatoire pour pouvoir y accéder.

              En fait un package est un ensemble de fonctionnalités.

              Comme c'est toi qui développes ces fonctionnalités, tu fais un peu comme tu veux au niveau des visibilités.
              Par contre les utilisateurs de ces fonctionnalités ne devront pas pouvoir utiliser n'importe comment les choses.

              • Partager sur Facebook
              • Partager sur Twitter
              Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                24 novembre 2014 à 10:25:55

                Hello,

                Merci à tous pour vos réponses :)
                Effectivement toutes mes classes étaient dans le même package. C'est pour sa que mes variables protected étaient accessibles. J'ai céer un autre package, mis mes classes ville et capitale dedans, et déclarer mes constructeurs en public et... miracle, ça fonctionne ! je n'ai plus accès à mes variable depuis le main (sauf via mes fonctions set/get), c'est ce que je voulais :)

                -
                Edité par bukibarak 24 novembre 2014 à 10:26:21

                • Partager sur Facebook
                • Partager sur Twitter
                J'achète, et je vends...

                [débutant] Question sur l'accessibilité

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown