La differenza tra class variables
e instance
variabili, è semplicemente una domanda di who knows what?
.
Un instance variable
è noto solo (= associato ) a quell'istanza concrete - 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 scrivendo in questo modo, ogni variabile sarebbe legata al suo oggetto concreto: ad es. Ogni persona ha il suo firstName
Un class variable
d'altra parte è - come dice il nome - noto a tutti i membri di una classe; o tecnicamente: è noto / vincolato a livello di classe . L'esempio tipico è un contatore di quanti oggetti, tu hai creato - 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
è dichiarato static
che è la parola chiave da distinguere tra class variables
e instance variabes
. La variabile è dichiarata come gli altri all'interno della definizione della classe. Ma la parola chiave static
segnala che è diverso.
-
firstName
, lastName
sono variabili di istanza e associati a quell'istanza concreta
-
numberOfPersons
è associato alla classe, in modo che ogni istanza possa accedere a questa variabile.
tl; dr
Il luogo in cui vengono definite le variabili è la definizione della classe.
Le variabili di classe sono conosciute / vincolate al livello di classe, cioè ogni istanza concreta ha accesso ad essa. Per definire una variabile di classe, si utilizza la parola chiave static
.
Le variabili di istanza sono conosciute solo a livello di istanza. Li definisci senza la parola chiave static
.
Ulteriore documentazione per Java è qui