La différence entre class variables
et instance
variables, est simplement une question de who knows what?
.
Un instance variable
est uniquement connu (= lié ) à cette instance concrète - d'où le nom.
public class Person {
private String firstName;
private String lastName;
[...]
}
La définition d'une classe est comme un modèle de construction d' objets en béton . Peut-être que ce point vous déroute un peu. Mais en l'écrivant de cette façon, chaque variable serait liée à son objet concret: par exemple, chaque personne a son propre prénom
A class variable
, d'autre part - comme son nom l'indique - connu de chaque membre d'une classe; ou techniquement: il est connu / lié au niveau de la classe . L'exemple typique est un compteur du nombre d'objets que vous avez créés - bien que ce soit un exemple très problématique; mais cela n'a pas d'importance à ce stade précoce.
public class Person {
private String firstName;
private String lastName;
[...]
static int numberOfPersons = 0
}
numberOfPersons
est déclaré, static
qui est le mot clé pour distinguer entre class variables
et instance variabes
. La variable est déclarée comme les autres dans la définition de classe. Mais le static
mot - clé signale qu'il est différent.
firstName
, lastName
sont des variables d'instance et liées à cette instance concrète
numberOfPersons
est lié à la classe, afin que chaque instance puisse accéder à cette variable.
tl; dr
L'endroit où les variables sont définies est la définition de classe.
Les variables de classe sont connues au niveau de la classe / liées, c'est-à-dire que chaque instance concrète y a accès. Pour définir une variable de classe, vous utilisez le mot-clé static
.
Les variables d'instance ne sont connues qu'au niveau d'une instance. Vous les définissez sans le static
mot clé.
La documentation supplémentaire pour Java est ici