static
détermine si un attribut est une variable d'instance (appartient à l'objet), où une variable de classe (appartient à la classe).
class MaClasse { static int nombreInstance=0; int x,y; }
La variable nombreInstance
est une variable de la classe MaClasse
, alors que les variables x
et y
appartiennent aux objets, instances de la classe MaClasse
. Par défaut, la variable est d'instance.
class AutreClasse { int ni = MaClasse.nombreInstance; MaClasse monObjet = new MaClasse(); int xx = monObjet.x; }
static
détermine si une opération (une méthode) est une méthode d'instance (appartient à l'objet), où une méthode de classe (appartient à la classe).
class MaClasse { static int nombreInstance=0; int x,y; static int dernièreInstance(){return nombreInstance;} int périmetre(){return 2*(x+y);} }
L'opération dernièreInstance()
est une méthode de la classe MaClasse
, alors que l'opération périmetre()
est applicable aux objets, instances de la classe MaClasse
. Par défaut, une méthode est d'instance.
class AutreClasse { int ni = MaClasse.dernièreInstance(); MaClasse monObjet = new MaClasse(); int p = monObjet.périmetre(); }
En Java, les pointeurs n'existent pas. En fait, à l'exception des types primitifs (boolean, char, byte, short, int, long, float, double), tout est implémenté avec des pointeurs.
MaClasse monObjet;ne fait que créer une variable
monObjet
qui permettra de référencer un objet de type MaClasse
. L'instruction
monObjet.perimetre();provoquera une erreur.
MaClasse monObjet = new MaClasse();crée une variable
monObjet
qui référence un objet de type MaClasse
. L'instruction
monObjet.perimetre();ne provoquera pas d'erreur.