Der Unterschied zwischen class variablesund instanceVariablen ist einfach eine Frage von who knows what?.
An instance variableist nur diese konkrete Instanz bekannt (= gebunden ) - daher der Name.
public class Person {
private String firstName;
private String lastName;
[...]
}
Die Definition einer Klasse ist wie eine Blaupause für die Erstellung konkreter Objekte. Vielleicht verwirrt Sie dieser Punkt ein bisschen. Wenn Sie es aber so schreiben, wird jede Variable an ihr konkretes Objekt gebunden: zB Jede Person hat ihren eigenen Vornamen
A class variablehingegen ist - wie der Name schon sagt - jedem Mitglied einer Klasse bekannt; oder technisch: Es ist auf Klassenebene bekannt / gebunden . Das typische Beispiel ist ein Zähler dafür, wie viele Objekte Sie erstellt haben - obwohl es ein sehr problematisches Beispiel ist. Aber das spielt in diesem frühen Stadium keine Rolle.
public class Person {
private String firstName;
private String lastName;
[...]
static int numberOfPersons = 0
}
numberOfPersonswird deklariert, staticwelches das Schlüsselwort ist, um zwischen class variablesund zu unterscheiden instance variabes. Die Variable wird wie die anderen innerhalb der Klassendefinition deklariert. Aber das staticSchlüsselwort signalisiert, dass es anders ist.
firstName, lastNameSind Instanzvariablen und zu diesem konkreten Fall gebunden
numberOfPersons ist an die Klasse gebunden, so dass jede Instanz auf diese Variable zugreifen kann.
tl; dr
Der Ort, an dem Variablen definiert werden, ist die Klassendefinition.
Klassenvariablen sind auf Klassenebene bekannt / gebunden, dh jede konkrete Instanz hat Zugriff darauf. Um eine Klassenvariable zu definieren, verwenden Sie das Schlüsselwort static.
Instanzvariablen sind nur auf Instanzebene bekannt. Sie definieren sie ohne das staticSchlüsselwort.
Weitere Dokumentation zu Java finden Sie hier