Partage
  • Partager sur Facebook
  • Partager sur Twitter

Besoin éclaircissement sur portée variable

    8 avril 2021 à 12:12:01

    Bonjour,

    je suis actuellement le cours Débutez la programmation avec Java, concernant le chapitre sur la portée des variables : https://openclassrooms.com/fr/courses/6173501-debutez-la-programmation-avec-java/6446031-saisissez-la-portee-de-vos-variables-dans-votre-code

    En fin de page il est précisé ceci :

    class PrivateClass {
    int internalProperty = 0; // assigne automatiquement package-private par défaut
    protected defaultProperty = true; // assigne automatiquement package-private
    public boolean publicProperty = true; // convertit automatiquement en package-private
    private String fileprivateProperty = "Hello!"; //disponible seulement pour la classe
    private static void privateMethod() {
    }
    }


    Dans l'exemple ci-dessus, nous avons ajouté un attribut sans mot clé de contrôle d'accès explicite. Dans ce scénario, il assume par défaut le niveau de l'élément contenant. Dans ce cas, c'est notre classe, donc il assume le niveau de  PrivateClass.

    Une classe de premier niveau ne peut pas être marquée comme private, mais la définir comme « par défaut » la placera dans le niveau package-protected. Lors de la déclaration d'une variable d'une classe, si le niveau de contrôle du contexte de déclaration est supérieur à celui de la classe, la variable doit également avoir un niveau de contrôle explicite. Déclarons une variable PrivateClass :

    PrivateClass a = new PrivateClass(); // Erreur
    private PrivateClass b = new PrivateClass(); // Ok
    private PrivateClass c = new PrivateClass(); // Ok

    Comme vous pouvez le voir, si le niveau d'accès par défaut du contexte d'une variable est supérieur à une classe que vous lui affectez, vous devez explicitement spécifier le niveau de la variable comme étant le même ou inférieur à celui de la classe.

    Je ne comprends pas pourquoi il y a l'erreur pour la variable a, si le niveau d'accès n'est pas spécifié, par défaut il s'agit donc de package-protected, soit le même niveau que sa classe PrivateClass dans laquelle elle est définie, donc pourquoi devrait-il y avoir une erreur ?

    -
    Edité par Girotti 12 avril 2021 à 15:18:59

    • Partager sur Facebook
    • Partager sur Twitter
      9 avril 2021 à 15:51:27 - Message modéré pour le motif suivant : Remarque de modération prise en compte


      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        12 avril 2021 à 15:22:46

        Bonjour c'est modifié, par contre concernant ma question posée ?
        • Partager sur Facebook
        • Partager sur Twitter
          16 avril 2021 à 12:12:06

          Non il ne devrait pas y avoir d'erreur.
          • Partager sur Facebook
          • Partager sur Twitter
            27 avril 2021 à 9:24:32

            Merci du retour, il faudrait que l'auteur corrige alors
            • Partager sur Facebook
            • Partager sur Twitter

            Besoin éclaircissement sur portée variable

            × 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