Der Unterschied zwischen class variables
und instance
Variablen ist einfach eine Frage von who knows what?
.
An instance variable
ist 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 variable
hingegen 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
}
numberOfPersons
wird deklariert, static
welches das Schlüsselwort ist, um zwischen class variables
und zu unterscheiden instance variabes
. Die Variable wird wie die anderen innerhalb der Klassendefinition deklariert. Aber das static
Schlüsselwort signalisiert, dass es anders ist.
firstName
, lastName
Sind 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 static
Schlüsselwort.
Weitere Dokumentation zu Java finden Sie hier