cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020
-
7 mars 2009 à 15:24
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020
-
7 mars 2009 à 17:06
Voilà, ma question est très simple, quand est ce que je dois déclarer une fontion en static ? J'ai cherché sur internet et j'ai trouvé qu'il ne fallait déclarer en static que les méthodes qui n'avaient pas besoin d'êtres instanciées, je ne comprends pas bien.
Est ce que l'un d'entre vous aurais un exemple pour me faire comprendre.
Le probleme est que pour une meme fonction, on peut la déclarer en static ou non et, on peut faire tourner le code et qu'il fonctionne, avec quelques petites modification seulement, je ne vois donc pas trop a quoi ca sert...
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 7 mars 2009 à 16:22
salut
c'est une question d'objet : une fonction static ne peut pas faire reference a l'objet courrant : elle n'accede pas a this, ni aux attributs non static, ni aux autres fonctions non static.
benmor
Messages postés49Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention27 novembre 20119 7 mars 2009 à 16:46
Bonjour,
Peut-être devrais-tu te tourner vers des cours de programmation orienté objet.
Si tu déclare un méthode en static, celle-ci ne sera pas rattaché à une instance de ta classe, tu ne peut donc ni utiliser les attributs ou les méthodes de la classe qui ne sont pas static.
Quelle que chose static est unique et toutes tes objets auront la même réfence.
Exemple:
public class Test
{
private static int s_id = 0;
private int id = 0;
public void inc()
{
s_id++;
id++;
}
public static void s_inc()
{
s_id++;
// id++; ===> Impossible, car s_inc() n'appartient pas à un objet Test puisque comme tu l'as dit, elle n'est pas insrancié.
}
}
Et le code suivant:
Test test1 = new Test();
Test test2 = new Test();
System.out.println("test1.id = " + test1.id);