Faire une méthode appelable que d'une autre méthode

a marqué ce sujet comme résolu.

Bonsoir,

Je suis en train de créer un jeu en JAVA qui pour l'instant se joue avec le terminal (dans mon cas, je suis sous BlueJ). J'aimerais qu'une méthode de ma classe1 ne puisse être appelée uniquement par une autre méthode d'une autre classe2 (et par les méthodes de classe1). C'est à dire qu'on ne puisse pas l'appeler par le terminal, mais pour autant sans qu'elle soit privée, puisqu'elle que d'autres classes ont besoin d'elle.

Sauriez vous si c'est-ce possible?

Par exemple, ma méthode method1() de ClassOne peut être appelée par toutes les autres méthodes de ClassOne mais aussi par certaines autres méthodes comme method2() de ClassTwo. Par contre, on ne peut pas taper dans le terminal ClassOne.method1() (en supposant que ma méthode est statique).

Bises.

+0 -0

@artragis Class protected, ce n'est pas uniquement dans le cas où ClassTwo serait hérité de ClassOne? Moi je voudrais pour deux classes qui n'ont pas de lien d'héritage.

Par ailleurs, pourquoi parles tu d'incohérence?

@tout le monde Mon but est de créer un jeu de type Othello. Pour cela, j'essaie déjà de créer la logique du jeu, puis implémenter une interface. Du coup, en premier lieu je veux faire un jeu qui se joue grâce au terminal, pour vérifier que la logique va bien. Pour l'instant, j'ai deux classes: Game (static) et Player. Seule une méthode contenue dans Game doit pouvoir changer le score du joueur. En partant de ce principe, il ne doit pas être possible pour un joueur d'incrémenter son score en tapent Game.joueur1.setScore(999) par exemple. Une fois que le jeu est parfaitement jouable grâce au terminal, je comptes implémenter une autre classe qui se chargera de proposer des options (lancer un jeu, créer un joueur, placer une tuile…), et gérer les exceptions (le joueur n'existe pas…).

+0 -0

@artragis Class protected, ce n'est pas uniquement dans le cas où ClassTwo serait hérité de ClassOne? Moi je voudrais pour deux classes qui n'ont pas de lien d'héritage.

non si la classe est protected, private ou "package" (c'est la visibilité par défaut, quand tu oublies de mettre public), c'est sa visibilité au niveau des package qui est décidée. Lorsque tu ne mets pas le "public" devant une classe, seules les classes qui sont dans le même package peuvent utiliser cette classe là.

Hmm, j'ai enlevé le public dans la signature de ma classe, mais je peux toujours effectuer la méthode depuis le terminal. Même chose si je rajoute un protected dans la signature de ma fonction.

Mais de toute façon, je me suis aperçu que l'interface serait compliqué à développer par la suite si je laisse l'option de jouer au jeu avec un terminal, du coup j'abandonnes l'idée de faire le jeu jouable depuis la console (et du coup je n'ai plus besoin d'une fonction appelable uniquement par une autre fonction). Merci!

Non mais on ne peut pas appeler une méthode, ni créer une variable, ni quoique ce soit d'autre dans le terminal, donc même si t'as méthode est publique… il est absolument impossible de faire monObjet.maMethod();

Freeza

Je me suis mal exprimé: je parlais du code pad, disponible dans l'IDE BlueJ.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte