Partage
  • Partager sur Facebook
  • Partager sur Twitter

Portée des méthodes :

    18 janvier 2018 à 11:37:47

    Bonjour,

    Je dois faire un petit jeu de snake en java.

    Mais je ne peux pas accéder à la méthode afficherSerpent() depuis un autre objet que celui d'où je l'ai créé ou l'un de ces parents.

    Cela est très contraignant. Je ne maitrise pas encore bien la notion de POO. Juste me dire comment je suis censé y accéder merci.

    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2018 à 11:58:31

      Bonjour,

      Comment as-tu déclaré ta méthode afficherSerpent ? Quel modificateur de visibilité as-tu utilisé (private, protected, public, aucun) ?

      Pour être sûr de ne pas avoir de problème, tu mets public (utilises les autres modificateurs quand tu seras un peu plus avancé en POO)

      • Partager sur Facebook
      • Partager sur Twitter
        18 janvier 2018 à 12:49:49

        Oui, j'ai mis public mais je ne peux pas accéder à l'objet depuis une autre classe que celle dans laquelle je l'ai créé.

        -
        Edité par aestetica 18 janvier 2018 à 12:50:11

        • Partager sur Facebook
        • Partager sur Twitter
          18 janvier 2018 à 12:58:05

          La classe contenant la méthode est-elle elle-même public ?
          • Partager sur Facebook
          • Partager sur Twitter
            18 janvier 2018 à 15:48:45

            Oui, elle l'est.

            -
            Edité par aestetica 18 janvier 2018 à 16:03:35

            • Partager sur Facebook
            • Partager sur Twitter
              18 janvier 2018 à 18:26:51

              Peux-tu juste nous indiquer comment tu appelles la méthode en question ?
              • Partager sur Facebook
              • Partager sur Twitter
                18 janvier 2018 à 18:31:30

                Il y a tout dans le même package, ou il y en a plusieurs ?

                en gros les règles c'est que

                - public, visible de partout

                - par défaut : visible de partout dans le package

                - privé : visible dans la classe seulement

                - protected : visible dans la classe et les sous-classes, y compris en dehors du package.

                il faut aussi que la classe soit publique, si on veut en créer des instances en dehors de son package.

                -
                Edité par michelbillaud 18 janvier 2018 à 18:32:58

                • Partager sur Facebook
                • Partager sur Twitter
                  19 janvier 2018 à 2:08:27

                  Salut,

                  Pour utiliser AfficherSerpent() depuis une autre classe, il y a deux solutions.

                  La première est de déclarer AfficherSerpent() "static", de la façon suivante :

                  public static void AfficherSerpent{
                       // le code
                  }

                  Si AfficherSerpent() se trouve dans la classe "Serpent", depuis une autre classe tu pourras l'appeler ainsi :

                  Serpent.AfficherSerpent();

                  L'autre solution est de créer une instance de la classe serpent. Pour ce faire, il faudra ajouter le constructeur suivant dans la classe Serpent :

                  public Serpent(){
                  
                  }

                  Dans la classe où tu te trouves, tu pourras ainsi faire appel à la méthode de cette façon :

                  Serpent serpent = new Serpent();
                  serpent.AfficherSerpent();
                  


                  En espérant que cela puisse t'aider,

                  Flo

                  -
                  Edité par _Florent_ 19 janvier 2018 à 2:09:13

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Contrôleur programmeur des finances publiques depuis le 01/10/18
                    19 janvier 2018 à 5:44:56

                    Tant que tu ne montres pas le code qui ne marche pas, on ne pourra pas vraiment te dire pourquoi, ni comment le corriger.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 janvier 2018 à 7:54:27

                      Oui mais si je veux faire appel à ma méthode en dehors de la classe où j'ai crée mon objet serpent, comment dois-je faire ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 janvier 2018 à 8:35:28

                        L'impression que ça donne, c'est que tu parles de la classe Serpent.

                        Bon il faudrait que tu fasses attention sur le vocabulaire. La programmation est un art très technique, les mots ont un sens précis, et si tu n'y fais pas attention tu ne comprends rien aux explications.

                        Tu n'as créé aucun objet Serpent dans la classe Serpent. Tu as défini une classe, point. C'est à dire (en simplifiant), indiqué quels seront les champs et les méthodes qu'auront les objets de cette classe, les instances.

                        Si tu as défini une classe avec une méthode

                        class Serpent  {
                          public void afficher() { ... }
                        }
                        

                        tu en construis une instance, ailleurs, avec un new. Et tu l'affectes sans doute à une variable

                        Serpent s = new Serpent();
                        

                        Pour demander l'affichage, tu fais

                        s.afficher();         // appel de la méthode afficher de l'objet s, instance de la classe Serpent


                        PS: quand tu as des problèmes avec ton code, comme on n'a pas de boules de cristal :

                        1) tu montres le code

                        2) tu donnes les messages d'erreur indiqués par le compilateur.

                        -
                        Edité par michelbillaud 19 janvier 2018 à 8:40:28

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Portée des méthodes :

                        × 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