Pourquoi le Static en Java ?
Résolu
ilhan94
-
ilhan94 -
ilhan94 -
Bonjour,
Je développe une application Java en mode console et j'ai du mal à expliquer certaines parties de mon propre code et sachant que je vais passer une épreuve dessus c'est pas top....
Alors voila je vous explique mes problemes:
1) lorsque je précise le chemin d'acces a mon fichier XML je tape
2)lorsque je déclare mes collections je tape
Il n'y a as d'erreurs de code tout marche sur des roulettes mais je suis incapable d'expliquer pourquoi le STATIC!!
[Help!!] c'est la galère!!
Je développe une application Java en mode console et j'ai du mal à expliquer certaines parties de mon propre code et sachant que je vais passer une épreuve dessus c'est pas top....
Alors voila je vous explique mes problemes:
1) lorsque je précise le chemin d'acces a mon fichier XML je tape
final static String PANNE_FILE = "./data/panne.xml"
2)lorsque je déclare mes collections je tape
static ArrayList<Panne> pannesList;
Il n'y a as d'erreurs de code tout marche sur des roulettes mais je suis incapable d'expliquer pourquoi le STATIC!!
[Help!!] c'est la galère!!
3 réponses
-
Le static prend son sens au sein d'une classe, sans la classe et ce que tu veux faire, il est impossible de dire pourquoi static est mieux que rien.
-
Pour une méthode, le mot-clé static, signifie qu'elle s'utilise sans objet de la classe, et qu'en particulier la méthode n'a pas accès à this qui n'a alors aucun sens.
Pour un objet, le mot-clé static garde le même sens d'appartenance à la classe, et pas à un objet précis, en fait c'est un objet commun à toutes les instances de la classe.
Dans ton cas :
PANNE_FILE est une constante définie pour toute la classe, tous les objets de la classe y ont accès. Tu peux, en particulier utiliser TaClasse.PANNE_FILE où TaClasse est le nom de la classe, mais en aucun cas un objet.
pannesList est une collection commune à toute la classe, cela signifie que peu importe qu'il y ait 1, 2, 150 ou 0 objet de la classe, cette liste existera toujours car elle appartient à la classe. Pareil tu peux l'utiliser avec TaClasse.pannesList, chaque objet de la classe va pouvoir de la classe va pouvoir la consulter, ou la modifier.
Remarque : en l'absence de mots-clés private, protected ou public, tous les objets du package ont accès à ces objets. Peut-être n'as-tu rien mis car tu ne sais pas t'en servir, mais il apparaît pourtant important de les spécifier selon ce que tu veux faire.
Ici je pense que PANNE_FILE devrait-être public, et pannesList protected... -