Różnica pomiędzy class variablesi instancezmienne, to po prostu kwestia who knows what?.
instance variableJest jedynym znanym (= związany ) z tym konkretny przykład - stąd jego nazwa.
public class Person {
private String firstName;
private String lastName;
[...]
}
Definicja klasy przypomina plan budowy konkretnych obiektów. Być może ten punkt nieco Cię myli . Ale pisząc to w ten sposób, każda zmienna byłaby przypisana do konkretnego obiektu: np. Każda osoba ma swoje imię
Z class variabledrugiej strony - jak sama nazwa wskazuje - jest znana każdemu członkowi klasy; lub technicznie: jest znany / związany na poziomie klasy . Typowym przykładem jest licznik liczby obiektów, które utworzyłeś - chociaż jest to bardzo problematyczny przykład; ale to nie ma znaczenia na tym wczesnym etapie.
public class Person {
private String firstName;
private String lastName;
[...]
static int numberOfPersons = 0
}
numberOfPersonsjest zadeklarowane staticjako słowo kluczowe do rozróżnienia między class variablesi instance variabes. Zmienna jest zadeklarowana tak jak inne w definicji klasy. Ale staticsłowo kluczowe sygnalizuje, że jest inaczej.
firstName, lastNamesą zmiennymi instancji i są powiązane z tą konkretną instancją
numberOfPersons jest powiązany z klasą, aby każda instancja mogła uzyskać dostęp do tej zmiennej.
tl; dr
Miejscem definiowania zmiennych jest definicja klasy.
Zmienne klasy są znane na poziomie klasy / powiązane z poziomem klasy, tj. Każda konkretna instancja ma do niego dostęp. Aby zdefiniować zmienną klasową, użyj słowa kluczowego static.
Zmienne instancji są znane tylko na poziomie instancji. Zdefiniujesz je bez staticsłowa kluczowego.
Dalsza dokumentacja dla Java jest tutaj