Bonjour,

Voici le code d'une classe Animal qui contient une variable statique nomméé id, comme le précise le code ci-dessous

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Animal{

int identifiant;
boolean male;
int age;

static int id=0;

//constructeur
Animal(boolean male1, int age1){
this.male = male1;
this.age= age1;
identifiant = id;
id++

}// fin constructeur
}// fin de classe

D'après ce code, à chaque création d'une instance de la classe animal, la variable identifiant contiendra une valeur incrémentée de 1 donc chaque animal aura un identifiant sequentiel.

voici un autre code qui semble contredire celui ci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
 
public class Date{
 
int jour;
int mois;
int annee;
 
static int nb;
 
}
puiblic class TestStatic{
 
public static void main(String []args){
Date d1= new Date(1,1,2000);
Date d2= new Date(2,2,2004);
 
System.out.println(Date.nb);
 
System.out.println(d1.nb);
 
System.out.println(d2.nb);
Date.nb=2;
 
System.out.println(Date.nb + "  " +d1.nb +  "   " +d2.nb);
 
d1.nb=1;
d1.jour = 23
 
 
System.out.println(Date.nb + "  " +d1.nb +  "   " +d2.nb);
 
System.out.println(d1.jour+  "  "  +d2.nb );
 
}
 
}
Voici le résultat obtenu
0
0
0
2,2,2
1,1,1
23,2

Ces résultats ne contredisent ils pas les résultats obtenus auparavant.
Car d'après ce nouveau code, la variable identifiant des instances de la classe Animal ne devrait elle pas contenir toujours la même valeur, puisque la valeur d'une variable statique est partagée par toutes les instances de la classe qui contient cette variable statique.
donc si la valeur de cette varaible statique evolue, elle evolue pour toutes les instances de la classe.
Pouvez vous me dire si quelque chose n'est pas bien compris de ma part ou si ces deux résultats sont contradictoires .

Je vous en remercie beaucoup.

Cordialement.

Nathalie