La diferencia entre class variablesy instancevariables, es simplemente una cuestión de who knows what?.
Un instance variablesólo es conocida (= obligado ) para que el hormigón ejemplo - de ahí el nombre.
public class Person {
private String firstName;
private String lastName;
[...]
}
La definición de una clase es como un plano para construir objetos concretos . Quizás este punto te confunda un poco. Pero escribiéndolo de esta manera, cada variable estaría vinculada a su objeto concreto: por ejemplo, cada persona tiene su propio nombre
A, class variablepor otro lado, es, como su nombre lo indica, conocido por todos y cada uno de los miembros de una clase; o técnicamente: es conocido / vinculado a nivel de clase . El ejemplo típico es un contador de cuántos objetos ha creado, aunque es un ejemplo muy problemático; pero eso no importa en esta etapa temprana.
public class Person {
private String firstName;
private String lastName;
[...]
static int numberOfPersons = 0
}
numberOfPersonsse declara staticcuál es la palabra clave para distingush entre class variablesy instance variabes. La variable se declara como las demás dentro de la definición de clase. Pero la staticpalabra clave indica que es diferente.
firstName, lastNameson variables de instancia y están vinculadas a esa instancia concreta
numberOfPersons está vinculado a la clase, de modo que cada instancia pueda acceder a esta variable.
tl; dr
El lugar donde se definen las variables es la definición de clase.
Las variables de clase se conocen en / vinculadas al nivel de clase, es decir, cada instancia concreta tiene acceso a ella. Para definir una variable de clase, usa la palabra clave static.
Las variables de instancia solo se conocen a nivel de instancia. Los define sin la staticpalabra clave.
Más documentación para Java está aquí