Bonjour,
lorsqu'on déclare une méthode static, est-ce que les variables de la méthode sont forcément static ?
Merci d'avance.
Version imprimable
Bonjour,
lorsqu'on déclare une méthode static, est-ce que les variables de la méthode sont forcément static ?
Merci d'avance.
Euh non, les variables d'une méthode sont toujours des variables locales.
Il y a bien des langages qui permettent de faire des variables static dans les méthodes (mais Java n'en est pas un,) mais ça n'aurait aucun sens de le faire en fonction de ce que la méthode soit static ou pas, c'est complètement deux choses différentes.
en fait je voulais dire ca plutot Une méthode statique ne peut pas utiliser de méthodes non statiques.
Salut,
Quelque soit le contexte (static ou pas), on peut invoquer une méthode non static (ou accéder à un attribut non static) dès lors qu'on a une instance et que la méthode (ou l'attribut) sont visible dans la portée de ce contexte.
Code:
1
2
3
4
5
6
7
8 public class Exemple { private int var1; public int var2; public int getVar1() { return var1; } }
En revanche, si tu parles d'accéder aux attributs ou méthodes non statiques de la classe à laquelle appartient la méthode statique, non, pour la même raison en fait : la méthode statique appartenant à la classe, elle n'est pas liée à une instance particulière, donc pas d'instance, donc pas d'accès aux méthodes non statiques (ou attributs non statiques).Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public static void uneMethodeStatic(Exemple parametre, List<Exemple> list) { System.out.println( parametre.getVar1() ); // appel d'une méthode non statique System.out.println( parametre.var2 ); // accès à un attribut non statique for(Exemple object : list) { System.out.println( object.getVar1() ); // appel d'une méthode non statique System.out.println( object.var2 ); // accès à un attribut non statique } Exemple variableLocale = new Exemple(); System.out.println( variableLocale.getVar1() ); // appel d'une méthode non statique System.out.println( variableLocale.var2 ); // accès à un attribut non statique }
Code:
1
2
3
4
5
6
7
8
9 public class Exemple { private int var; public static void methodeStatic() { System.out.println(var); // impossible : ça ne compile pas, parce que var n'est accessible que par une instance, et il n'y en a pas ici. } }
Code:
1
2
3
4
5
6
7
8
9
10 public class Exemple { private int var; public static void methodeStatic() { Exemple exemple = new Exemple(); System.out.println(exemple.var); // possible : parce que var est accédée par une instance. } }