Une méthode de classe ou une méthode statique est une méthode qui n'agit pas sur des variables d'instance mais uniquement sur des variables de classe.
static
Exemple : la méthode main
Exemple :
i = Math.abs(j); // valeur absolue
Modélisation avec une méthode non-statique | Modélisation avec une méthode statique |
---|---|
public class Cercle1 { double rayon = 1; double x = 0, y = 0; double perimetre(){ return this.rayon * 2 * Math.PI; // this correspond à la variable cercle } public static void main(String[] args) { Cercle1 cercle = new Cercle1(); System.out.println(cercle.perimetre()); } } |
public class Cercle2 { double rayon = 1; double x = 0, y = 0; static double perimetre(Cercle2 c){ return c.rayon * 2 * Math.PI; // c correspond à la variable cercle } public static void main(String[] args) { Cercle2 cercle = new Cercle2(); System.out.println(perimetre(cercle)); } } |
Résumé :
/** * Classe créée par Valérie Levasseur pour illustrer la différence * entre instance et classe. * * Illustre aussi le masquage * (portée des variables) * */ public class InstanceClasse { //Chaque instance possède SA copie private int varInstance = 1; //Variable commune à toutes les instances de type InstanceClasse private static int varClasse = 3; public int methodeInstance1(){ //Variable locale à cette méthode int varInstance = 2; /** * Masquage de la variable d'instance : * on retourne la définition locale */ return varInstance; } //Mot clé static - méthode de classe public static int methodeClasse() { //retour de la variable de classe return varClasse; } public int methodeInstance2 () { //La définition la plus proche est la variable d'instance return varInstance; } public int methodeInstance3(){ int varInstance = 4; //Le mot clé this permet de retourner la variable d'instance return this.varInstance; } public String toString() { return "[varInstance=" + varInstance + ", varClasse=" + varClasse +"]"; } //Accesseur de la variable d'instance public int getVarInstance() { return varInstance; } //Mutateur de la variable d'instance public void setVarInstance(int varInstance) { this.varInstance = varInstance; } //Accesseur de la variable de classe public static int getVarClasse() { return varClasse; } //Mutateur de la variable de classe public static void setVarClasse(int varClasse) { InstanceClasse.varClasse = varClasse; } public static void main(String[] args) { //Création des instances InstanceClasse instance1= new InstanceClasse(); InstanceClasse instance2= new InstanceClasse(); System.out.println("instance1 :"+instance1); System.out.println("instance2 :"+instance2); //Modification de l'instance 2 instance2.setVarInstance(-1); instance2.setVarClasse(-10); //Observer l'instance1 - elle n'a pas été modifiée System.out.println("Après modification de l'instance 2 \n(varInstance = -1, varClasse=-10)"); System.out.println("instance1 :"+instance1); System.out.println("instance2 :"+instance2); } }