Comment Accéder à une Variable d'une Autre Classe sans Créer de Nouveaux Objets
Mon trop long titre dit tout... je veux être en mesure d'accéder à une variable d'une autre classe sans la création d'un nouvel objet.
Actuellement, la seule façon que je sais comment accéder à une autre classe de la variable est:
Control control = new Control;
int dirtCount = control.dirtCount;
Cependant, si je veux accéder à cette variable dans ma saleté de l'objet, je serais obligé de créer un nouveau Contrôle de l'objet pour chacun d'eux. Cela crée un cycle sans fin...
comment puis-je accéder à la variable sans la création d'un nouvel objet?
(Si vous voulez voir le reste de mon code, je peux le poster. Je pense que cette partie est la plus pertinente bien :))
- Lire sur les variables de classe et les variables d'instance.
- avez-vous entendu parler de variables statiques? Bien que je pense que @SotiriosDelimanolis conseil est bon.
- Qu'en est staic variable / variable de classe. Lire Comprendre les Membres de la Classe.
Vous devez vous connecter pour publier un commentaire.
Un autre moyen serait de déclarer la variable comme
static
, ce qui signifie que c'est un variable de classe (c'est différent d'un variable d'instance). De Java Tutoriel (l'emphase est mienne):Dans le
Control
classe:et vous pouvez l'utiliser sans la création d'une instance:
Remarque:
Si vous voulez que la variable à
private
vous pouvez définir unstatic
méthode de lecture:et vous pouvez appeler la méthode
getDirCount
serastatic
, vous pas l'utilisation de toutnon-static
champ ou d'une méthode à l'intérieur. Assurez-vous que vous utilisez uniquementstatic
champs à l'intérieur d'unstatic
méthode. Si vous avezdirCount
et " getDirCount (), identique à ce que j'ai posté, il ne devrait pas être un problème. Veuillez vérifier que vous avez lastatic
mot-clé lors de la déclaration dedirCount
etgetDirCount
.getDirCount
très bien, mais le problème est que je ne peux pas définir une variable dans laDirt
classe degetDirCount
dans quoi que ce soit, mais le constructeur pour cette classe. J'ai mis cela dans le constructeurint dirtNumber2 = Control.getDirtCount(); this.dirtNumber = dirtNumber2;
, et ça a fonctionné, mais j'ai besoin de mettre à jour la variable à chaque étape. J'ai une méthode qui met à jour à chaque étape, mais j'obtiens l'erreur que j'ai mentionné la dernière fois, j'ai fait ce que j'ai dans le constructeur de là. J'ai essayé de faire la classe statique, mais cela ne fonctionne pas car je ne veux pas la variable dans leDirt
de la classe statique. Je suppose que ce que j'ai besoin de faire est de convertir la variable statique dans une situation de non-statique de la variable? Merci encore une fois!static
. Mais ça dépend de qu'est-ce que votre classe l'intention de le faire. Une instance deDirt
ne jamais être créé?static
variabledirtCount
dans leur constructeur, nulle part ailleurs. Je vous remercie pour votre aide permanente!En java, une classe peut avoir deux types de variables de membre
1) instance variables, ils sont créés à chaque objet de cette classe, et peut être l'accès par un objet de cette classe.
2) variables de classe - qu'ils appartiennent à la classe des moyens de chacun et de chaque objet peuvent partager une même variable, et peut être l'accès par le nom de classe
Oui, vous devez lire un peu de variables statiques. Vous pouvez le vérifier sur http://www.caveofprogramming.com/frontpage/articles/java/java-for-beginners-static-variables-what-are-they/