bonsoir à tous le monde je voudrais savoir j'ai cette erreur
no static variable can't referenced from static context (j'ai déclarez une variable)
dans une méthode statique
je voudrais savoir pourquoi
bonsoir à tous le monde je voudrais savoir j'ai cette erreur
no static variable can't referenced from static context (j'ai déclarez une variable)
dans une méthode statique
je voudrais savoir pourquoi
Le mot cle static permet de créer des variables/méthodes de classe. Ce qui signifie que tu peux (dois) les utiliser via une classe et non une instance de classe.
Exemple: imaginons que tu crées un jeu d'échec. Tu vas avoir une classe correspondant à chaque pièce. Prenons le "cavalier". Tu vas créer une classe "Cavalier". Certains attributs de cette classe seront identiques quels que soit l'instanciation de ta classe.
En d'autres termes, si ton jeu comporte, 1 ou 2 ou 10 cavaliers, certaines caractéristiques seront identiques pour tous les cavaliers, comme le mode de déplacement. Dans ce cas il est intéressant de déclarer la variable "deplacement" comme static.
Tu pourras alors récupérer le déplacement des cavaliers sans avoir à en instancier.
Dans ton code, au lieu d'avoir:
Cavalier c = new Cavalier();
c.deplacement;
Tu auras Cavalier.deplacement;
Revenons maintenant à ton problème: lorsque tu déclares une méthode statique, tu peux l'appeler sans instancier d'objet. Cette méthode ne peut donc utiliser que des variables statiques.
Dans notre exemple, le jeu va comporter des cavalier noir et blanc. LA caractéristique couleur est donc particulière à chaque instance (objet) que tu vas créer. La couleur n'est donc pas statique. Tu ne peux donc pas l'utiliser dans une méthode statique. le compilateur ressortira alors l'erreur que tu mets dans ton message.
C'est pas trop confus comme explication ?
Vous êtes dans un "static context", vraisemblablement une méthode statique. Il n'y a donc aucune instance courante (this) de la classe connue, il est donc impossible d'accéder à des méthode ou des variable de l'instance courante depuis ce contexte statique. Exemple de code en faute:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public class MaClasse { int a; public static void test(){ a++; // erreur, a n'est pas statique } }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager