Comment utiliser une méthode privée en Java
Je me suis donné une classe qui a une méthode privée dire setCoors(int x, int y). Le constructeur de cette classe a la setCoors en trop. Dans une classe différente, je veux avoir une méthode setLocation qui appelle setCoors. Est-ce possible?
Nouvelle Question:
Si je ne suis pas autorisé à définir la méthode pour le public, est-ce possible?
public class Coordinate{
public Coordinate(int a, int b){
setCoors(a,b)
}
private void setCoords(int x, int y)
}
public class Location{
private Coordinate loc;
public void setLocation(int a, int b)
loc = new Coordinate(a,b)
}
vous êtes à faire des hypothèses. Étant donné qu'il ne comprend pas l'ensemble du public vs privé de la chose, je doute de sa classe, il a tout fait pour la réflexion encore. Bien sûr, c'est une supposition trop ... juste un peu plus petit étant donné qu'il est en indiquant que le constructeur appelle la méthode privée ... 😉
Je suis d'accord que oui, la réponse "non" est plus utile parce que vous avez raison, la question est à venir à partir d'un début Java contexte. Je ne suis pas plutôt que de laisser la réponse en place pour les autres visiteurs de la page, mais si il y a un consensus qu'il n'appartient pas, je peux le retirer. Encore, je ne peux pas décider, cependant, si le réponse est "non", quelque chose comme "eh bien, non, vous ne pouvez pas, mais weeeeellllll, il y a est ce vraiment compliqué porte d'entrée qui vous permet de le faire, mais personne ne fait exception de ces méchants pirates et vous pouvez apprendre à ce sujet plus tard...." Ou peut-être pas. 🙂
Je suis d'accord que oui, la réponse "non" est plus utile parce que vous avez raison, la question est à venir à partir d'un début Java contexte. Je ne suis pas plutôt que de laisser la réponse en place pour les autres visiteurs de la page, mais si il y a un consensus qu'il n'appartient pas, je peux le retirer. Encore, je ne peux pas décider, cependant, si le réponse est "non", quelque chose comme "eh bien, non, vous ne pouvez pas, mais weeeeellllll, il y a est ce vraiment compliqué porte d'entrée qui vous permet de le faire, mais personne ne fait exception de ces méchants pirates et vous pouvez apprendre à ce sujet plus tard...." Ou peut-être pas. 🙂
OriginalL'auteur Dan | 2011-10-08
Vous devez vous connecter pour publier un commentaire.
Non,
private
signifie que la méthode ne peut être appelée à l'intérieur de la Classe dans laquelle elle est définie. Vous aurez probablement envie d'avoirsetLocation
créer une nouvelle instance de la classesetCoords
réside dans, ou de modifier la visibilité sursetCoords
.EDIT: Le code que vous avez posté fonctionnera. Juste être conscient que toute instance de la
Location
classe sera lié à sa propreCoordinate
objet. Si vous créez un nouveauCoordinate
objet quelque part dans votre code, il vous sera impossible de modifier son état interne. En d'autres termes, la ligne depermettra de créer l'objet
myCoord
qui sera pour toujours avoir les coordonnées4
et5
.Oui, en supposant que c'est ce que vous voulez. Sans voir la conception de classe, il est difficile de dire si c'est la bonne façon d'aborder le problème.
OriginalL'auteur brc
La meilleure et la plus utile de réponse dépend du contexte de la question, qui est, je crois, pas tout à fait évident.
Si la question était une question de novice sur la prévu sens de privé, alors la réponse "non" est tout à fait approprié. Qui est:
Maintenant, si, et bien c'est peut-être un tronçon (merci Brian 🙂 ), que la question est un "plus avancés" contexte où l'on cherche à la question de la "je sais les moyens privés privé mais est-il une langue faille", puis, bon, il y est une telle lacune. Il va comme ceci:
De sortie:
Bien sûr, ce n'est vraiment pas quelque chose que les programmeurs d'applications serait jamais faire. Mais le fait qu'une telle chose peut être fait est intéressant de savoir, et non pas quelque chose qui doit être ignoré. À mon humble avis, de toute façon.
haha trop drôle. Ray est juste, mais je pense que Brian est encore plus à droite. 😉 "Non" est une bien meilleure réponse. 🙂
Il n'y a vraiment aucun moyen de dire à partir de la question que l'étudiant ne comprend pas public et privé. Cela aurait pu être une question de recherche dans une classe avancée. Mais votre question est juste. Je vais obtenir la réponse, merci.
OriginalL'auteur Ray Toal
private
signifie qu'il est privéSi vous voulez d'autres classes de l'appeler, peut-être que vous ne devriez pas le faire en privé?
setCoords
méthode.Pas vrai. Il peut être consulté avec la réflexion. Il n'a pas demandé si il doit, il a demandé s'il pouvait. Maintenant, je suis entièrement d'accord que vous devriez lui dire qu'il ne devrait pas, mais cela ne change pas le fait que la bonne réponse est "Oui, mais ..."
OriginalL'auteur anonymous coward
Pas
private
méthodes ne peuvent pas être accessibles à l'extérieur de la classe dans laquelle elles sont définiesOriginalL'auteur shubhendu mahajan
Kid-faire-les devoirs: la réponse est non. Guy-exigeant-de-fou-travail-autour-de-son-travail: la réponse est oui. Beaucoup plus important encore, Votre
setCoors
méthode ne devrait pas prendre des arguments de type int. Il devrait prendre deuxSilverBullet
objets.OriginalL'auteur Eric Lindauer
private
signifie que vous ne pouvez accéder à l'intérieur de la classe définie.OriginalL'auteur Jay