La differenza tra class variables
e instance
variabili, è semplicemente una questione di who knows what?
.
An instance variable
è noto (= associato ) solo a quell'istanza concreta , da cui il nome.
public class Person {
private String firstName;
private String lastName;
[...]
}
La definizione di una classe è come un progetto per la costruzione di oggetti concreti . Forse questo punto ti confonde un po '. Ma scrivendolo in questo modo, ogni variabile sarebbe legata al suo oggetto concreto: ad esempio, ogni persona ha il suo nome
A class variable
d'altra parte è - come dice il nome - noto a tutti i membri di una classe; o tecnicamente: è noto / associato a livello di classe . L'esempio tipico è un contatore di quanti oggetti sono stati creati, sebbene sia un esempio molto problematico; ma non importa in questa fase iniziale.
public class Person {
private String firstName;
private String lastName;
[...]
static int numberOfPersons = 0
}
numberOfPersons
viene dichiarato static
quale è la parola chiave per distinguere tra class variables
e instance variabes
. La variabile è dichiarata come le altre all'interno della definizione di classe. Ma la static
parola chiave segnala che è diversa.
firstName
, lastName
sono variabili di istanza e associate a quell'istanza concreta
numberOfPersons
è associato alla classe, in modo che ogni istanza possa accedere a questa variabile.
tl; dr
Il luogo in cui sono definite le variabili è la definizione della classe.
Le variabili di classe sono note a / associate al livello di classe, ovvero ogni istanza concreta ha accesso ad essa. Per definire una variabile di classe, utilizzare la parola chiave static
.
Le variabili di istanza sono note solo a livello di istanza. Li definisci senza la static
parola chiave.
Ulteriore documentazione per Java è qui