Pourquoi le Static en Java ?

Résolu/Fermé
ilhan94 - 18 mai 2011 à 12:15
 ilhan94 - 18 mai 2011 à 14:09
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
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!!


A voir également:

3 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
18 mai 2011 à 12:35
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.
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
18 mai 2011 à 13:38
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...
0
Merci bcp @KX ta réponse est claire.
0