Quelques notions sur les objets

Champs static et final

Champs final
Supposons qu'on souhaite utiliser le constructeur créé dans le premier exercice ci-dessus avec un facteur de proportionnalité particulier, par exemple (1+√5)/2, dit "nombre d'or". On peut avoir envie de conserver cette valeur "à portée de main" de la classe Boite, donc dans un champ de cette classe. Comme ce champ ne devra jamais changer de valeur, on le qualifiera de final: c'est alors une constante, qui peut seulement être lue mais non modifiée.
class Boite{
int profondeur,largeur,hauteur;
boolean pleine;
final double NOMBRE_D_OR=(1+Math.sqrt(5))/2;
....
}

On peut alors accéder à cette valeur comme champ de n'importe quel exemplaire de Boite.

...
maboite=new Boite();
maboite.largeur=(int)(maboite.profondeur*maboite.NOMBRE_D_OR);
...
Champs static

Toujours dans le cadre de cet exemple, puisque la valeur du champ NOMBRE_D_OR est le même pour toutes les boites, il semble inutile de le recréer pour chaque nouvelle boite : un seul exemplaire serait suffisant. On peut alors le déclarer static. Un champ static appartient à la classe elle-même. On n'a pas besoin de créer d'exemplaires de la classe pour pouvoir l'utiliser.

Dans la classe boite on écrira ainsi

class Boite{
int profondeur,largeur,hauteur;
boolean pleine;
final static double NOMBRE_D_OR=(1+Math.sqrt(5))/2;
....
}

On accède à cette valeur comme champ de la classe Boite.

...
System.out.println(Boite.NOMBRE_D_OR);
...
Il n'est pas nécessaire d'avoir créé une instance d'une classe pour utiliser ses champs static

Les noms des constantes final static sont souvent notées en majuscules : cela permet de ne pas les confondre avec une méthode.

Vos amis ont tous une chose en commun, c'est vous... Ajoutez un champ final static à la classe Ami pour y mettre votre nom !
 
Licence Creative Commons
licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé
Auteur : Nathalie Bonnin
Professeur de Physique, Chimie, Informatique au lycée La Martinière Monplaisir (Lyon 8ème)
Contact :
nathalie.bonnin (chez) scientillula.net
Licence Creative Commons
La totalité du contenu du site Scientillula.net appartient à Nathalie Bonnin et est mise à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé