4.1 Variable de classe
Une variable de classe est partagée par toutes les instances de la classe. Sa
modification affecte toutes les instances. Une variable de classe existe avant toute
instanciation de la classe.
⋄Même si une variable de classe n’est pas stockée dans la zone mémoire de
l’objet, elle fait partie de l’ensemble des attributs de chaque instance de cette
classe.
⋄L’initialisation d’une variable de classe s’effectue au chargement de la classe.
Elle peut de faire dans un « bloc statique » déclaré à l’intérieur de la classe. La
machine virtuelle exécute le bloc statique au chargement de la classe.
Par exemple pour initialisation d’une variable de classe qui contient un tableau.
class Exemple {
static final private Porte [ ] portes = new Porte [ 1 0 ] ;
static private double [ ] mesReels = new double [ 2 0 ] ;
4
static {
for (int i = 0; i < mesIndicateurs . length ; i ++)
portes [ i ] = new PorteCoulissante ( i + 1)
9for (int i = 0; i < mesReels . length ; i ++)
mesReels [ i ] = Math .random ( ) ;
}
}
Boutez Vos Neurones : Pourquoi l’initialisation d’une variable de classe dans un
constructeur est-elle problématique ?
L’utilisation la plus fréquente est la définition d’une constante, par exemple
ou .
Un exemple d’utilisation de variables de classe constantes pour la mise en œuvre
d’une énumération représentant la couleur dans un jeux de cartes français 1.
public class Enseigne {
final public static Enseigne COEUR = new Enseigne ( , 2 ) ;
final public static Enseigne CARREAU = new Enseigne ( , 1 ) ;
5final public static Enseigne PIQUE = new Enseigne ( , 3 ) ;
final public static Enseigne TREFLE = new Enseigne ( , 0 ) ;
final private int ordre ;
final private String nom;
10
private Enseigne ( String nom, int ordre ) {
this .nom = nom;
this . ordre = ordre ;
}
1. Avant l’apparition de la classe dans l’A.P.I. Java .
26